${variable:=default}
如果尚未设置变量,则将变量设置为默认值.请考虑以下示例:
#!/bin/bashfile ${foo:=}echo "foo >$foo<"file ${bar:=} | catecho "bar >$bar<"
输出是:
$./test myfile.txtmyfile.txt: ASCII textfoo >myfile.txt<myfile.txt: ASCII textbar ><
您会注意到变量foo的值为$1,但变量bar不是,即使其默认结果显示在file命令中.
如果你从第4行将无害管道移到cat并重新运行它,那么foo和bar都设置为$1的值
我在这里错过了什么,或者这可能是一个bash BUG?
(GNU bash,版本4.3.30)
解决方法 在第二种情况下,文件是管道成员,并在其自己的shell中作为每个管道成员运行.当子shell结束的文件时,带有$1新值的$b不再存在.解决方法:
#!/bin/bashfile ${foo:=}echo "foo >$foo<": "${bar:=}" # Parameter Expansion before subshellfile $bar | catecho "bar >$bar<"总结
以上是内存溢出为你收集整理的linux – 如果后跟管道(bash bug?),Bash变量默认不起作用全部内容,希望文章能够帮你解决linux – 如果后跟管道(bash bug?),Bash变量默认不起作用所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)