最近接触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];thenecho'OK'elseecho'Notexists:/www'fiif难道有形式是直接判断程序的stdout有没有输出的?没有吧~if始终只是判断程序执行结果的exitstatus,即$?,0表示true,非0表示false。对了,其实了解下$?、SIG、Pipe之类的是什么就行了,Bash这些奇怪的语法真的不用多学的,反正真要写脚本,干嘛不用Python呢,PHP也比Bash好啊。过来人~说多了都是泪!
慕的地10843
TA贡献1785条经验 获得超8个赞
if貌似有的时候能加[]而有的时候是不能加[]的这什么时候能加什么时候不能加呢还有if什么时候是获取命令执行后输出的内容A:用反引号``,例如a=`pwd`就是获取当前路径然后复制到a变量还有是什么时候命令执行后是否成功也就是echo$?呢A:$?返回值0代表执行成功,返回值1代表执行失败
添加回答
举报
0/150
提交
取消
