跟我一起写Linux下的shell脚本:3

3268 人浏览 | 时间: 2015-12-22 20:25:39 | 作者: zlp

距离上一篇文章,已经过去快4个月了。对不起观众。不是因为懒,是因为自己从暑假开始就一直有各种各样的比赛。到现在,终于都结束了。所以才有空,继续更新linux系列的文章。那就开始吧。

 

今天先讲一下shell变量的知识点。

Linux下的SHELL脚本常以 *.sh 为后缀,和Windows下的批处理脚本 *.bat *.cmd功能一致,但是功能和语法都要更强大。SHELL是一门脚本语言。

1. 新建文件

Linux下新建一个文本文件,命名为demo.sh,并输入以下内容:

  1. #!/bin/sh  
  2. echo hello,ss  

2. 运行脚本

 (1)  sh  test.sh
这里用/bin/sh这种程序来解释执行test.sh

(2)  ./test.sh
这是把test.sh当作一个可执行文件来执行。要求:
     - test.sh
有可执行属性   chmod +x test.sh
     - test.sh
第一行是  #!/bin/sh

(3)  ./test.sh
点号也是可以执行脚本的。和前面的区别是,用点号执行时脚本的变量将自动输出到当前环境中。而用前面2种方法执行时,脚本中的变量不会注入到当前环境(除非显示地export

 

3. 变量

SHELL里的变量都是字符串

定义变量时,变量名不加美元符号($PHP语言中变量需要),如:

ss=hfedu
num=12

变量名和等号之间不能有空格,这可能和你熟悉的所有编程语言都不一样。同时,变量名的命名须遵循如下规则:

  • 首个字符必须为字母(a-zA-Z)。
  • 中间不能有空格,可以使用下划线(_)。
  • 不能使用标点符号。

不能使用bash里的关键字(可用help命令查看保留关键字)。

 (2) 使用变量

使用一个定义过的变量,只要在变量名前面加美元符号即可,如:

my_name="ss"
echo $ my_name
echo ${ my_name }

变量名外面的花括号是可选的,加不加都行,加花括号是为了帮助解释器识别变量的边界。

 (3) 只读变量

使用 readonly 命令可以将变量定义为只读变量,只读变量的值不能被改变。


(4)
删除变量

unset ss
可以从当前环境变量里取消一个变量, 变量被删除后不能再次使用。unset 命令不能删除只读变量。

(5) 变量类型

运行shell时,会同时存在三种变量:

  • 1) 局部变量 局部变量在脚本或命令中定义,仅在当前shell实例中有效,其他shell启动的程序不能访问局部变量。
  • 2) 环境变量 所有的程序,包括shell启动的程序,都能访问环境变量,有些程序需要环境变量来保证其正常运行。必要的时候shell脚本也可以定义环境变量。
  • 3) shell变量 shell变量是由shell程序设置的特殊变量。shell变量中有一部分是环境变量,有一部分是局部变量,这些变量保证了shell的正常运行

 

最后,给出一份代码,望大家在电脑上写一下,结合上面的知识点进行练习和体会。



相关阅读