作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我对“$?”的值感到困惑在我的 shell 脚本中。我写了一个演示脚本如下:
#!/bin/bash
echo "good"
if [ $? -ne 0 ];then
echo "$? not equal 0"
else
echo "$? equal 0"
fi
echo "good"
ret=$?
if [ $ret -ne 0 ];then
echo "$ret not equal 0"
else
echo "$ret equal 0"
fi
我知道,“$?”用于保存上一个函数或命令的返回值,为什么输出如下?
good
1 equal 0
good
0 equal 0
这是否意味着 [ $? -eq 0 ]
也是命令还是函数?我很困惑!
最佳答案
您的原始代码可以重写为:
$ if echo "good"; then echo "$? equal 0"; fi
good
0 equal 0
由于您的代码仅检查 echo 命令的退出值,它几乎总是会返回 0(例如“true”),除非其文件描述符已关闭。例如:
$ echo foo; echo $?
foo
0
$ echo bar >&- ; echo $?
-bash: echo: write error: Bad file descriptor
1
关于linux - 为什么 "$?"条件下 "if"的值变了?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32519018/
COW 不是奶牛,是 Copy-On-Write 的缩写,这是一种是复制但也不完全是复制的技术。 一般来说复制就是创建出完全相同的两份,两份是独立的: 但是,有的时候复制这件事没多大必要
我是一名优秀的程序员,十分优秀!