今天有人问了一个小问题,类似这样:

我省去了脚本名称和数据路径,意思是这样个意思。为了想知道name进行了输出。
然后结果:


name并没有在下面的命令中参数位置正确显示。
这是为什么呢?其实主要是因为shell赋值时,=的规则没有弄明白。
shell给变量赋值时,规定=两边不能有空格。比如:
name="ABD"
如果是想把执行命令的结果赋值给变量:下面两个方法都可以
name=`command`
name=$(command)
那我们看看为什么第一个脚本中= 右边有空格,也仍然输出了 AA?
原因是=右边一个空格的时候,是将空赋值给了name,然后执行了命令,也就是上面输出的AA是执行命令后命令输出的,不是echo输出的。我们把echo去掉,运行后也会输出AA。
我们在试一个:
name= mkdir AA
运行后,会在当前路径下创建文件夹,同时,name被赋值了空
总结:
1.shell在赋值的时候,=左右两边不能有空格,如果右侧有空格,不会报错,因为会把空赋值给变量。
2.如果是想把命令结果赋值给变量,可以使用上面提到的的两个方法
网友评论