运行脚本没有提供任何结果

运行脚本没有提供任何结果

你好!我是一名初学者,正在尝试学习 Bash 脚本。我想使用我的脚本读取用户输入(哈希值)。但是,当我运行脚本时,它只是挂起而不返回任何结果。这是我运行脚本的方式 ./md5.sh ab68ae97c98a18bda63312d263d6061c。谢谢。

#!/bin/bash
read hashinput
Getpath="$( find . -type f -exec md5sum {} + | grep "($hashinput)" )"
echo $Getpath
exit

答案1

使用此脚本,它会在您执行 ./md5.sh 后等待答复。

例如,您的代码意味着您执行以下操作:

./md5.sh
(md5_hash)

用于输入。

但是因为您正在执行./md5.sh (md5_hash),所以它对您的输入不执行任何操作(因为它不是正确的输入,它是一个脚本参数)。

您可以添加@davidgo 推荐的内容,但您也可以执行以下操作:

#!/bin/bash
echo "MD5 Sum/Hash:" 
read hashinput
Getpath="$( find . -type f -exec md5sum {} + | grep "($hashinput)" )"
echo $Getpath
exit

像提示一样进行创建。

喜欢:

$ ./md5.sh
MD5 Sum/Hash: (md5_hash)

这就是我使用 shell 脚本制作提示的方法。

因此,本质上有两种可能:

  1. 你在输入echo之前创建一个文本提示read
  2. 您可以关注@davidgo 并添加代码来执行参数。

答案2

看来您的脚本需要不同的输入。根据 @KamilMaciorowski 的评论,您的脚本当前运行的方式需要从 STDIN 获取输入才能工作 - 因此您可以按如下方式运行脚本:

 echo ab68ae97c98a18bda63312d263d6061c | ./md5.sh 

它将把哈希 a...c 提供给标准输出,以供脚本解析。

如果您想按照示例用法将哈希作为命令行参数,可以尝试以下脚本:

 #!/bin/bash
 if [ -z "$1" ]
 then
      echo "Usage $0 hash"
      exit 
 fi

 Getpath=$( find . -type f -exec md5sum {} + | grep "$1" ) 
 echo "$Getpath"
 exit

上面的 $1 是提供给脚本的第一个参数。我不确定你为什么用双引号括住 Getpath 的右侧。

相关内容