bash-表示“的含义”;(doSomething)| |:“;

bash-表示“的含义”;(doSomething)| |:“;,bash,unix,solaris,Bash,Unix,Solaris,我偶然发现了这一行代码: ( cd ${TRASH_DIR} && rmdir 20* 2> /dev/null ) || : 第一个表达式对我来说很清楚,但是“其他部分”的含义是什么:只是“:”?在这些情况下,我通常会看到“| |退出1”,这一点我也很清楚 PS:不幸的是,我似乎无法在没有提示的情况下用谷歌搜索这个字符组合…可以找到“:”shell字符含义的定义。这是您需要查找的代码段;在这个冗长的页面上很难找到: :null命令[冒号]。这相当于一个“NOP”(no-

我偶然发现了这一行代码:

( cd ${TRASH_DIR} && rmdir 20* 2> /dev/null ) || :
第一个表达式对我来说很清楚,但是“其他部分”的含义是什么:只是“
”?在这些情况下,我通常会看到“
| |退出1
”,这一点我也很清楚


PS:不幸的是,我似乎无法在没有提示的情况下用谷歌搜索这个字符组合…

可以找到“:”shell字符含义的定义。这是您需要查找的代码段;在这个冗长的页面上很难找到:

null命令[冒号]。这相当于一个“NOP”(no-op,一个donothing操作)的shell。它可以被认为是壳牌公司的同义词。“:”命令本身是Bash内置的,其退出状态为true(0)


在您的问题中考虑的代码行中,它仅用于确保表达式的0的最终退出代码,独立于在那里检查的条件。

您可以使用<代码>:< /Code >是一个总是且仅返回true(0)的命令,这只意味着即使失败,命令也会退出true。@thomas ayoub:非常感谢这个符号猎犬!立即获取:)谢谢:现在在stackoverflow上找到了symbolhound:在本例中,它位于成功退出脚本的最后一行,即使在第一行中有被抑制的错误expression@evilive在这种情况下,您只需将
退出0
放在末尾,这显然要清楚得多,因为如果最后一个人那样做,这个问题就不存在了@谢谢!在读这篇文章之前就这么做了;)