Linux 在if语句中使用退出状态编写Bash脚本
这可能是一个新手问题,但无论如何,在我的linux/unix入门课程中,我谈到了bash脚本,在其中一个问题中,我得到了it任务,让我编写一个脚本,因此如果用户搜索到文件中不存在的名称,它会输出一条消息,说“您的输入不在目录中” 它表示使用Linux 在if语句中使用退出状态编写Bash脚本,linux,bash,Linux,Bash,这可能是一个新手问题,但无论如何,在我的linux/unix入门课程中,我谈到了bash脚本,在其中一个问题中,我得到了it任务,让我编写一个脚本,因此如果用户搜索到文件中不存在的名称,它会输出一条消息,说“您的输入不在目录中” 它表示使用if语句和退出状态$? 到目前为止,我得到了输入部分,但我不确定如何在if语句中正确使用$?,如果可能的话 #!/bin/bash name=$1 if [ "$name" = "" ] then echo -n "Enter a name to s
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
#/bin/bash
姓名=$1
如果[“$name”=”]
然后echo-n“输入要搜索的名称:”
读名字
fi
grep-i$name~uli101/2014c/phonebook
如果[“$?”<“0”]
然后回显“错误”
fi
我得到一个错误:
./phone4:第14行:0:没有这样的文件或目录
我的问题是:我如何使用$?
和if
语句,如果我不能,你能解释一下在这个问题中如何使用$?
吗
注意:我确实使用了
echo$?
来查看$?
如何在grep
有效的情况下给出0,而在不起作用的情况下给出1。别介意我的一个朋友把我推向了正确的方向:
我所要做的就是:
if [ "$?" = "1" ]
then echo "error"
fi
我想得太多了,我只想说如果$?=1然后是错误,因为在读数中它表示$?可以大于1。我正试图弥补这一点。别介意我的一个朋友把我推向了正确的方向: 我所要做的就是:
if [ "$?" = "1" ]
then echo "error"
fi
我想得太多了,我只想说如果$?=1然后是错误,因为在读数中它表示$?可以大于1。我正试图弥补这一点。别介意我的一个朋友把我推向了正确的方向: 我所要做的就是:
if [ "$?" = "1" ]
then echo "error"
fi
我想得太多了,我只想说如果$?=1然后是错误,因为在读数中它表示$?可以大于1。我正试图弥补这一点。别介意我的一个朋友把我推向了正确的方向: 我所要做的就是:
if [ "$?" = "1" ]
then echo "error"
fi
我想得太多了,我只想说如果$?=1然后是错误,因为在读数中它表示$?可以大于1。我试图对此进行补偿。其中有两个错误。您已经看到的是在
[]
表达式中,有两个bug。您已经看到的是在[]
表达式中,有两个bug。您已经看到的是在[]
表达式中,有两个bug。您已经看到的是,在[]
表达式中,应该是
if [ "$?" -gt 0 ]
符号“应该是
if [ "$?" -gt 0 ]
符号“应该是
if [ "$?" -gt 0 ]
符号“应该是
if [ "$?" -gt 0 ]
符号“的“$?”不需要引号,因为它实际上是一个数字。如果您想要更好的脚本,请检查电话簿文件是否存在,如果文件丢失,请在询问名称输入之前退出。此外,如果您在READ命令上不回复任何内容(仅输入),则可能需要执行某些操作
#!/bin/bash
name=$1
phonebook=~/phonebook
if [ "$name" = "" ]
then
echo -n "Enter a name to search for: "
read name
fi
grep -i "$name" $phonebook
if [ $? -gt 0 ]
then
echo "error, no \"$name\" in $phonebook"
fi
“$?”不需要引号,因为它实际上是一个数字。如果您想要更好的脚本,请检查电话簿文件是否存在,如果文件丢失,请在询问名称输入之前退出。此外,如果您在READ命令上不回复任何内容(仅输入),则可能需要执行某些操作
#!/bin/bash
name=$1
phonebook=~/phonebook
if [ "$name" = "" ]
then
echo -n "Enter a name to search for: "
read name
fi
grep -i "$name" $phonebook
if [ $? -gt 0 ]
then
echo "error, no \"$name\" in $phonebook"
fi
“$?”不需要引号,因为它实际上是一个数字。如果您想要更好的脚本,请检查电话簿文件是否存在,如果文件丢失,请在询问名称输入之前退出。此外,如果您在READ命令上不回复任何内容(仅输入),则可能需要执行某些操作
#!/bin/bash
name=$1
phonebook=~/phonebook
if [ "$name" = "" ]
then
echo -n "Enter a name to search for: "
read name
fi
grep -i "$name" $phonebook
if [ $? -gt 0 ]
then
echo "error, no \"$name\" in $phonebook"
fi
“$?”不需要引号,因为它实际上是一个数字。如果您想要更好的脚本,请检查电话簿文件是否存在,如果文件丢失,请在询问名称输入之前退出。此外,如果您在READ命令上不回复任何内容(仅输入),则可能需要执行某些操作
#!/bin/bash
name=$1
phonebook=~/phonebook
if [ "$name" = "" ]
then
echo -n "Enter a name to search for: "
read name
fi
grep -i "$name" $phonebook
if [ $? -gt 0 ]
then
echo "error, no \"$name\" in $phonebook"
fi
您希望比较值,对吗,而不是重定向值“0”?使用-lt
而不是来比较值,对吗,而不是重定向值“0”?使用-lt
而不是来比较值,对吗,而不是重定向值“0”?使用-lt
而不是来比较值,对吗,而不是重定向值“0”?使用-lt
而不是哦,好吧,那么像-ne一样等于“小于”?我太傻了,我忘了<是一个重定向而不是小于运算符,这学期我还有C的介绍,我只是把命令链接在一起,谢谢你解释-ne
是“不相等的”,“-lt
是“小于的”有关更多信息,请参见mantest
。哦,好的,那么-ne等同于“小于”吗?我太傻了,我忘了<是一个重定向而不是小于运算符,这学期我还有C的介绍,我只是把命令链接在一起,谢谢你解释-ne
是“不相等的”,“-lt
是“小于的”有关更多信息,请参见mantest
。哦,好的,那么-ne等同于“小于”吗?我太傻了,我忘了<是一个重定向而不是小于运算符,这学期我还有C的介绍,我只是把命令链接在一起,谢谢你解释-ne
是“不相等的”,“-lt
是“小于的”有关更多信息,请参见mantest
。哦,好的,那么-ne等同于“小于”吗?我太傻了,我忘了<是一个重定向而不是小于运算符,这学期我还有C的介绍,我只是把命令链接在一起,谢谢你解释-ne
是“不相等的”,“-lt
是“小于的”有关更多信息,请参见人工测试。正确与正确之间的区别是$?要么是零,要么不是零。所以,它实际上是0,或者