gpt4 book ai didi

linux - 在 if 语句中使用退出状态的 Bash 脚本

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:10:23 25 4
gpt4 key购买 nike

可能是一个新手问题,但无论如何,在我的 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com