|
在学习bash scripts时,有几个概念实在是弄不太清楚
VAR $VAR "$VAR" 三者的关系
最一般的概念:
VAR=1 定义VAR变量 $VAR 使用VAR变量, 我试着将其理解为在shell解释器解释脚本文件时,把所有$VAR的地方都替换为 1 。可这种理解在某些情况下又解释不通,比如:
S1=hello
S2=world
if [ $S1 = $S2 ]; then
echo equals
else
echo not equals
fi
此时,$S1 = $S2 理解为 比较 hello 和 world, 这是在比较字符串吗?
S1=hello
S2=world
if [ “$S1” = “$S2” ]; then
echo equals
else
echo not equals
fi
这时有是怎么一种情况呢? 比较 "hello" 和 "world" ???
我只知道当S1="hello abc" 的时候,用第一种比较是不行的,但如何从原理上理解这种差别呢?
再比如下面的例子 打印1+1的值
X=1
echo $[1+X] 的打印值是2
echo $[1+$X] 的打印值也是2
echo $[1+"$X"] 就是错误的了。
对于echo $[1+$X] ,我理解为shell解释器将其替换成echo $[1+x], 而echo $[1+"$X"] 则被替换成 echo $[1+"1"] ? 因而是错误的?可echo $[1+X] 怎么理解呢?
照结果,这里的X为1,但echo X的打印值为X而不是1阿? 为什么?而且,如果X=”1“, $[1+X] 的打印值仍然为2,为什么?
对于这些,我实在是晕的,所以问题好象也提的有点乱,不好意思,先谢过了。 |
|