在UNIX bash脚本编写中编写if语句需要一些帮助

时间:2013-06-19 20:23:43

标签: bash unix if-statement grep sh

我正在编写一个相当冗长的脚本(或者我认为很长的脚本 - 你可以在几个小时内完成它)。我基本上有一个文件(名为.restore.info),其中包含名称文件。在脚本的一部分,我想测试“如果找不到.restore.info中的文件名,那么说”错误:恢复的文件不存在“。抱歉,如果这对你们没有意义(对我来说,它确实在宏观方案中)。所以如果在命令行中输入:

sh MYSCRIPT filename

它将在.restore.info文件中搜索字符串文件名,如果找不到任何内容,则会产生错误消息。

基本上,我需要将此编码的顶行翻译成UNIX bash语句,并且实际上有意义!:

If grep $1 .restore.info returns an exist status of 1; then
  echo “Filename does not exist!”
fi

提前致谢!请问我是否需要我更清楚地澄清任何内容,因为我知道我不是最好的解释员,我会在不到一分钟的时间内回复你! (当然会给出代表和最佳答案!)

3 个答案:

答案 0 :(得分:2)

您可能只关心grep是否以非零退出状态退出:

if ! grep -q "$1" .restore.info; then
    echo "Filename does not exist!"
fi

但是如果你真的关心特定的退出状态(在这种情况下为1):

if ! grep -q "$1" .restore.info && [[ $? -eq 1 ]]; then
    echo "Filename does not exist!"
fi

答案 1 :(得分:0)

使用grep -q

grep -q "filename" .restore.info && echo "found match"

! grep -q "filename" .restore.info && echo "not found"

答案 2 :(得分:0)

grep -l 'filename' .restore.info
if [ $? = 0 ];then
   echo "found it"
else 
  echo "not found"
fi