LinuxSir.cn,穿越时空的Linuxsir!

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

问一个sehll编程的规则

[复制链接]
发表于 2005-4-29 07:50:26 | 显示全部楼层 |阅读模式
我昨天看了一个sehll脚本( 我以前没有学过)

我看到
声明一个变量时直接写变量名之后再赋值就可以了

1、请问是不是shell编程就是这样规定的
    使用变量之前不用声明   
   变量名不用像PHP一样前面加$啊?


2、再往下看那个脚本     在引用前面的变量的时候   作者在变量名前加了$  

   

   请版本简单给我说一下shell变量的使用规定!

谢谢了   只要简单的说一说就可以
非常感谢
发表于 2005-4-29 08:20:09 | 显示全部楼层
对bash ksh zsh(绿色部分)
变量赋值 abc="1 2 3"
变量引用 echo ${abc}abc

对csh
变量赋值 set abc="1 2 3"
变量引用 echo ${abc}abc

[PHP]abc="1 2 3"
echo ${abc}abc
1 2 3abc[/PHP]
回复 支持 反对

使用道具 举报

发表于 2005-4-29 09:34:42 | 显示全部楼层
shell没有强制性的变量声明(当然,你也可以用declare来声明变量类型), 当你给变量赋值的时候,shell一律视其为string.当对变量进行运算或比较时,shell根据变量是不是全数字来确定如何处理。所以shell里的变量是没有"type"这一说的。${xxx}或$xxx是用来获取变量的值。也就是说,shell里的变量都是没有$的,而有$的,都是那个变量的值。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-4-29 21:41:10 | 显示全部楼层
linux_now先生
您说的意思就是说

引用变量的时候把变量名前加一个$时不是啊
并且把变量的名子放在{}中  


是不是这样啊?
谢谢您 了
回复 支持 反对

使用道具 举报

发表于 2005-4-29 22:08:23 | 显示全部楼层
你要是能试一下就最好了,说再多好像都没试一下更来得简单
回复 支持 反对

使用道具 举报

发表于 2005-4-29 22:08:28 | 显示全部楼层
楼主你说得对,两位斑竹也从另一个方面进行了简要说明。
如果在引用时会发生混淆,就要加上定界符{};比如

declare STR="The string is "
echo $STRHello World #这个引用shell认为STRHello是变量,所以用错了
echo ${STR}Hello World #这样是正确的
echo $STR"Hello Word" #这个是变通,在这里也是可以的,因为shell把“”里面的内容作为字符串处理,所以,变量自然是STR。

用到老学到老,大伙儿多多交流
回复 支持 反对

使用道具 举报

发表于 2005-4-30 00:51:09 | 显示全部楼层
Post by ccic
我昨天看了一个sehll脚本( 我以前没有学过)

我看到
声明一个变量时直接写变量名之后再赋值就可以了

1、请问是不是shell编程就是这样规定的
    使用变量之前不用声明   
   变量名不用像PHP一样前面加$啊?


2、再往下看那个脚本     在引用前面的变量的时候   作者在变量名前加了$  

   

   请版本简单给我说一下shell变量的使用规定!

谢谢了   只要简单的说一说就可以
非常感谢

sehll脚本是什么脚本? :ask
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-4-30 18:33:19 | 显示全部楼层
linux_now
谢谢你
回复 支持 反对

使用道具 举报

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

本版积分规则

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