可能是一个新手问题,但无论如何,在我的 linux/unix 类(class)介绍中涉及 bash 脚本,在我遇到的一个问题中,它要求我制作一个脚本,这样如果用户在文件中搜索名称那不在那里它会输出一条消息说“your_input不在目录中”
它说使用 if
语句和退出状态 $?
。
到目前为止,我得到了输入部分,但我不确定如何在可能的情况下在 if
语句中正确使用 $?
。
#!/bin/bash
name=$1
if [ "$name" = "" ]
then echo -n "Enter a name to search for: "
read name
fi
grep -i $name ~uli101/2014c/phonebook
if [ "$?" < "0" ]
then echo "error"
fi
我得到错误:
./phone4: line 14: 0: No such file or directory
我的问题是:如何使用 $?
with 和 if
语句,如果我不能,你能解释一下如何使用 $?
在这个问题中?
注意:我确实使用了 echo $?
来查看如果 grep
有效,$?
如何给出 0如果没有,则为 1。
最佳答案
其中有两个错误。您已经看到的是 []
中的那个表达式,<
不被解释为“小于”,而是被解释为流重定向运算符。原因是 [
只是另一个程序( test
的别名),所以 [ "$?" < "0" ]
类似于 cat < filename
.另一个错误是您不想检查“小于”而是“不等于”。总结:
if [ "$?" < "0" ]
应该是
if [ "$?" -ne "0" ]
或者你可以这样写
if ! grep "$name" ~uli101/2014c/phonebook
...因为if
将返回代码零解释为 true,将其他所有内容解释为 false。
关于linux - 在 if 语句中使用退出状态的 Bash 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27208713/