微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何检测关键字“if”是否为false?

在bash脚本中

if [ 1 ] then echo "Yes" else echo "No" fi

输出: Yes

它表示'1'被视为真正的价值。

但在代码中:

Shell脚本删除小于x kb的文件

bash脚本,计算给定分区的已用磁盘空间百分比

sudo nohup很好< – 以什么顺序?

从terminal更改Ubuntu 12.04中的系统代理设置

如何查找每个目录中文件名最大的文件

word = Linux letter = nuxi if echo "$word" | grep -q "$letter" then echo "Yes" else echo "No" fi

输出:没有

但echo "$word" | grep -q "$letter" echo "$word" | grep -q "$letter"将返回1,为什么结果是否定的

如果在iftesting命令返回的值,关键字如何?

对input文件中的每个string小写脚本,并将结果输出到新文件

Cgi-bin脚本来捕捉用户拥有的文件

Linux – 如何在没有查找命令的情况下查找最近12小时内更改的文件

无法获得Python版本使用python – 版本在Linux上与python使用Popen

Linux / Bash使用PS -f来处理特定的PID返回格式不同于PS -f,也用grep来parsing这个问题

检查命令的返回值。 [ 1 ]的返回值为0 (真)。 任何其他返回值(如1 )表示一个错误

您可以使用$?显示上次执行的命令的返回值 变量:

true echo $? # returned 0 false echo $? # returned 1 echo $? # returned 0 as the last executed command is 'echo',and not 'false'

在unix地区,0是真的,1是假的。

举个例子:

if [ 1 ] then echo "Yes" else echo "No" fi

“If”检查给定命令的退出码是否为真/假(即零/非零)。

方括号实际上调用了“test”命令(参见“man test”以获取更多信息)并将退出代码赋给if。

“测试1”(或者确实是“测试any_string”)返回true(0),所以输出“Yes”。

对于第二个例子,输出“No”是因为在Linux中找不到“nuxi”,如果将“nuxi”改为“nux”(也许这是一个错字?)并删除=会得到你期望的行为。 例如

word=Linux letter=nux if echo "$word" | grep -q "$letter" then echo "Yes" else echo "No" fi

这是因为grep未能在$ word中找到$字母,因此退出代码是1.每当linux中的进程返回0以外的代码时,就意味着它失败了。 0表示成功退出。 你可以用echo "Linux" | grep -d "nuxi"; echo $?来验证 echo "Linux" | grep -d "nuxi"; echo $?

另一方面,在脚本世界中,0代表虚假,1代表真实。 所以grep找不到这个单词,并把1作为退出代码发送给if,把它当作一个真正的值。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐