开发者社区> 问答> 正文

linux shell if几个困惑

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

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

展开
收起
a123456678 2016-06-20 11:43:31 1834 0
1 条回答
写回答
取消 提交回答
  • 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好啊。过来人~说多了都是泪!

    2019-07-17 19:44:00
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Alibaba Cloud Linux 3 发布 立即下载
ECS系统指南之Linux系统诊断 立即下载
ECS运维指南 之 Linux系统诊断 立即下载