为了账号安全,请及时绑定邮箱和手机立即绑定

linux shell if几个困惑

linux shell if几个困惑

皈依舞 2019-04-13 08:46:13
最近接触shell感觉语法真是奇怪无比if貌似有的时候能加[]而有的时候是不能加[]的这什么时候能加什么时候不能加呢还有if什么时候是获取命令执行后输出的内容还有是什么时候命令执行后是否成功也就是echo$?呢感觉if变化太多了
查看完整描述

2 回答

?
斯蒂芬大帝

TA贡献1827条经验 获得超8个赞

mantest,当[只是一个普通的命令就行了。if[-d/root]等同于iftest-d/root,语义是ifisdir/root。你直接这样执行也可以啊:
[-d/root]
echo$?#输出0
[-e/www]
if[$?-eq0];then
echo'OK'
else
echo'Notexists:/www'
fi
if难道有形式是直接判断程序的stdout有没有输出的?没有吧~if始终只是判断程序执行结果的exitstatus,即$?,0表示true,非0表示false。
对了,其实了解下$?、SIG、Pipe之类的是什么就行了,Bash这些奇怪的语法真的不用多学的,反正真要写脚本,干嘛不用Python呢,PHP也比Bash好啊。过来人~说多了都是泪!
                            
查看完整回答
反对 回复 2019-04-13
?
慕的地10843

TA贡献1785条经验 获得超8个赞

if貌似有的时候能加[]而有的时候是不能加[]的这什么时候能加什么时候不能加呢
还有if什么时候是获取命令执行后输出的内容
A:用反引号``,例如a=`pwd`就是获取当前路径然后复制到a变量
还有是什么时候命令执行后是否成功也就是echo$?呢
A:$?返回值0代表执行成功,返回值1代表执行失败
                            
查看完整回答
反对 回复 2019-04-13
  • 2 回答
  • 0 关注
  • 382 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号