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

标签 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

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

最佳答案

您可能只关心 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

关于bash - 在 UNIX bash 脚本中编写 if 语句需要一些帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17200607/

相关文章:

bash - 意外 token (带有xmlstarlet

bash - 合并文本文件列表(太长),在之间添加换行符分隔符

bash - 如果第一列出现在另一个文件中,则从文件中删除行

javascript - Function "overruns"执行期间的if-else语句

java - 通过数组列表搜索? java

bash - dbus-monitoring 循环自动退出

bash - 使用mpirun conda环境slurm出错

c - 我在 forking() 上收到 "Cannot Allocate Memory"错误的可能原因是什么?

c - 当父进程不是 root 时,有什么方法可以确定子进程被内核用 SIGKILL 杀死

php - 使用递归 PHP 组织 mySQL 数据