停止发布 grep 消息
Stop grep message from posting
我正在编写一个带有 1 个字符串参数和一个文件的脚本。我想要它,以便如果放入一个不存在的文件,那么它将显示“文件名 无法读取”消息。
该部分确实有效,但它也会显示 "grep: grep.txt: No such file or directory" 消息。如果第一个 if 语句为真,有什么方法可以阻止 grep 消息发布和结束脚本?
#! /bin/sh
if [ ! -f "" ]
then
echo "[=10=]" cannot be read 1>&2
fi
if [ $# -eq 2 ]
then
grep ""
else
echo there is more or less than 2 arguments 1>&2
fi
你可以在 grep 命令中添加 /dev/null 它会抑制错误部分。
grep "" 2>/dev/null
> 运算符通常将输出重定向到文件,但也可以重定向到设备。您也可以使用 >> 追加。
2> file
将 stderr 重定向到文件
/dev/null 是空设备,它接受您想要的任何输入并将其丢弃。它可以用来抑制任何输出。
使用非零退出代码退出脚本以指示失败并阻止它继续 grep
。
if [ ! -f "" ]
then
echo "[=10=]" cannot be read 1>&2
exit 1
fi
您可以重定向来自 grep 的所有错误,例如:
grep "" 2>/dev/null
(2>
表示重定向标准错误,与使用 >
或 1>
的标准输出相反)。
然而,这引入了竞争条件:如果文件在您的脚本作为 运行 时消失,当您检查它是否存在时它可能仍然存在,但在 grep
运行时消失了.
您可以通过检查退出状态来处理...
grep "" 2>/dev/null
if [[ $? -gt 1 ]]; then
echo "grep failed unexpectedly" >&2
fi
恕我直言,在这个例子中最好只让 grep
打印错误。
我正在编写一个带有 1 个字符串参数和一个文件的脚本。我想要它,以便如果放入一个不存在的文件,那么它将显示“文件名 无法读取”消息。
该部分确实有效,但它也会显示 "grep: grep.txt: No such file or directory" 消息。如果第一个 if 语句为真,有什么方法可以阻止 grep 消息发布和结束脚本?
#! /bin/sh
if [ ! -f "" ]
then
echo "[=10=]" cannot be read 1>&2
fi
if [ $# -eq 2 ]
then
grep ""
else
echo there is more or less than 2 arguments 1>&2
fi
你可以在 grep 命令中添加 /dev/null 它会抑制错误部分。
grep "" 2>/dev/null
> 运算符通常将输出重定向到文件,但也可以重定向到设备。您也可以使用 >> 追加。
2> file
将 stderr 重定向到文件
/dev/null 是空设备,它接受您想要的任何输入并将其丢弃。它可以用来抑制任何输出。
使用非零退出代码退出脚本以指示失败并阻止它继续 grep
。
if [ ! -f "" ]
then
echo "[=10=]" cannot be read 1>&2
exit 1
fi
您可以重定向来自 grep 的所有错误,例如:
grep "" 2>/dev/null
(2>
表示重定向标准错误,与使用 >
或 1>
的标准输出相反)。
然而,这引入了竞争条件:如果文件在您的脚本作为 运行 时消失,当您检查它是否存在时它可能仍然存在,但在 grep
运行时消失了.
您可以通过检查退出状态来处理...
grep "" 2>/dev/null
if [[ $? -gt 1 ]]; then
echo "grep failed unexpectedly" >&2
fi
恕我直言,在这个例子中最好只让 grep
打印错误。