BASH:为什么printf返回1?
我有一个问题,煤气灯照亮了我 下面是我的bash脚本“foo”,简化为问题:BASH:为什么printf返回1?,bash,printf,return-value,Bash,Printf,Return Value,我有一个问题,煤气灯照亮了我 下面是我的bash脚本“foo”,简化为问题: #!/bin/bash function Args() { [[ "$1" == "-n" ]] && [[ -d "$2" ]] && printf "%s\n" "new ${3}" [[ "$1" == "-p" ]] && [[ -d "$2" ]] && printf "%s\n" "page ${3}" } [[ $# -e
#!/bin/bash
function Args()
{
[[ "$1" == "-n" ]] && [[ -d "$2" ]] && printf "%s\n" "new ${3}"
[[ "$1" == "-p" ]] && [[ -d "$2" ]] && printf "%s\n" "page ${3}"
}
[[ $# -eq 3 ]] && Args "$@"
echo $?
现在,当我执行此代码时,会发生以下情况:
$ ./foo -n / bar
new bar
1
然而,这是可行的:
$ ./foo -p / bar
page bar
0
请问,有人能解释一下吗
抱歉,如果这是一个已知的“事情”,我的谷歌搜索技能必须提高…在第一种情况下,它返回
1
,只是因为第二种情况:
[[ "$1" == "-p" ]] && [[ -d "$2" ]] && printf "%s\n" "page ${3}"
当您将脚本调用为时,将不匹配/应用:
./foo -n / bar
./foo -p / bar
由于第二组条件不匹配,它将向您返回1,因为$?
表示最新命令的退出状态,实际上是第二组条件的退出状态
当您将脚本称为:
./foo -n / bar
./foo -p / bar
自从第2行被执行以来,它将向您返回状态
0
,这也是最近执行的一行。AHHH,我这个笨蛋!我知道问题所在。。谢谢你