linux 下 shell编写时 空格问题

写shell脚本时,总会时不时的被空格问题所困扰,经过苦思冥想,终于想通了。。。


我们知道,shell脚本是由shell来执行的,抛开脚本先不谈,我们在用shell执行命令的时候,是怎样一个过程,无非是输入一个命令,然后可能会有一些参数,参数于参数之间


用空格来分割,那么重点就来了,shell再执行一个脚本的时候,无非是把脚本的每一行当作一条独立的命令来执行罢了。这里先不说if while for 这些结构,既然每行都是一条命令


那也得遵循命令的语法吧。比如赋值的时候,i=1 这个=两边就不能有空格,为什么?因为一旦写成i = 1的形式,shell就会认为i是个命令名,而=和1是它的两个参数,会有i这个命


令吗?我估计不太会有,那就当然会报错了,它会报找不到i这个文件之类的错,于是赋值=的两边就不能有空格,而是把i=1整体当做一个命令来执行,而在if [ ]的形式中,[就是一


个命令名 包括后面的诸如 -f $filename ] 等 都是它的参数,这就必须每个元素之间有空格!又来区分。。为什么?因为 [ ] 是用来代替 test的 ,而test本身就是条命令。。


这样记忆可能好点。if 是命令。后面都是参数、像while  for 这样的都是命令。。。还有expr 是命令。。所以里面的$i + $j 就得用空格来分割。。


细心的同学可能会发现。ls -l /usr/bin/[ 是有这个命令存在的。这就更近一步说明 需要空格的必要性了。还有expr 都是命令!!!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值