LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 633|回复: 3

VAR $VAR "$VAR" 三者的关系

[复制链接]
发表于 2005-6-30 02:14:10 | 显示全部楼层 |阅读模式
在学习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,为什么?

对于这些,我实在是晕的,所以问题好象也提的有点乱,不好意思,先谢过了。
发表于 2005-6-30 08:28:08 | 显示全部楼层
去chinaunix.net看一看netman的shell十三问
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-7-2 17:50:30 | 显示全部楼层
多谢你给指了条路,那个文档写的很好,我很多疑问都弄清了,正在继续看,哈
回复 支持 反对

使用道具 举报

发表于 2005-7-11 14:22:12 | 显示全部楼层
shell是个不错的东西,可以编写很多程序。如果你买本好一点的手册做参考,大部分 c 的基础编程都可以用shell来做。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表