linux shell if几个困惑
天蓬老师
天蓬老师 2017-04-17 11:54:24
[Linux讨论组]

最近接触shell 感觉 语法真是奇怪无比
if 貌似 有的时候能加 [] 而有的时候是不能加 [] 的 这什么时候能加 什么时候不能加呢

还有 if 什么时候是获取 命令执行后输出的内容 还有 是什么时候命令执行后是否成功 也就是 echo $? 呢 感觉 if 变化太多了

天蓬老师
天蓬老师

欢迎选择我的课程,让我们一起见证您的进步~~

全部回复(2)
巴扎黑

man test,当[只是一个普通的命令就行了。if [ -d /root ] 等同于 if test -d /root,语义是 if isdir /root。你直接这样执行也可以啊:

[ -d /root ]
echo $?             # 输出0
[ -e /www ]
if [ $? -eq 0 ]; then
    echo 'OK'
else
    echo 'Not exists:/www'
fi

if 难道有形式是直接判断程序的stdout有没有输出的?没有吧~if始终只是判断程序执行结果的exit status,即$?,0表示true,非0表示false。


对了,其实了解下$?、SIG、Pipe之类的是什么就行了,Bash这些奇怪的语法真的不用多学的,反正真要写脚本,干嘛不用Python呢,PHP也比Bash好啊。过来人~说多了都是泪!

PHPz
  1. if 貌似 有的时候能加 [] 而有的时候是不能加 [] 的 这什么时候能加 什么时候不能加呢

  2. 还有 if 什么时候是获取 命令执行后输出的内容
    A:用反引号``,例如a=`pwd`就是获取当前路径然后复制到a变量

  3. 还有 是什么时候命令执行后是否成功 也就是 echo $? 呢
    A:$? 返回值0代表执行成功,返回值1代表执行失败

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号