源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

Shell 编程:Bash空格的那点事

  • 时间:2020-07-29 15:14 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:Shell 编程:Bash空格的那点事
先了解下bash中什么时候该用空格,什么时候不该用。 1. 等号赋值两边不能有空格 2. 命令与选项之间需要空格 3. 管道两边空格可有可无 我们来看看常见的问题 [b]1. 赋值时等号两边或者只有左边多了空格 [/b]
igi@gentoo ~ $ var1 = test
bash: var1: command not found
igi@gentoo ~ $ echo ${var1:?error}
bash: var1: error
igi@gentoo ~ $ echo ${var1?error}
bash: var1: error
igi@gentoo ~ $ var2 =test
bash: var2: command not found
igi@gentoo ~ $ echo ${var2:?error}
bash: var2: error
igi@gentoo ~ $ echo ${var2?error}
bash: var2: error
这里我用了bash的变量扩展,${var1:?error}当var1为unset或null(未定义或空)时, 报指定错误; ${var1?error}当var1为unset时,报指定错误 。从执行结果来看,如果等号左边有空格,则变量名当成命令执行,结果报command not found,变量没有被赋值 [b]2. 赋值时等号左边没有空格,右边有空格(这种情况有点特别,你会发现两种情况)[/b]
igi@gentoo ~ $ var= test
igi@gentoo ~ $ var= nocmd
bash: nocmd: command not found
同样是等号右边有空格,第一条命令没报错,而第二条报错了。 这是因为shell中有这么一种执行命令的方式: var=string command 命令command将得到变量var的值(至于在命令执行后,变量var的值是否保留下来,bash4中没有保留,但我在dash中发现时保留下来的,不 同的shell对这个的处理不同), 由于test是个命令,而nocmd不是,所以报了command not found.
igi@gentoo ~ $ var=newtest eval echo \$var
newtest
igi@gentoo ~ $ echo $var
注意: 这里我使用了eval, 是想避免在第一次解析时$var被替换成空字符串, 不然就会出现下面的情况(下面是错误的测试方法,在echo还没执行时,$var已经被替换成空字符串)
[url=http://www.1sucai.cn/article/60329.htm]Bash引号那点事[/url] 最后,对于管道两边可有可无的空格,就不扯淡了,因为没遇到有人对此有疑惑.
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部