简单学习了一下Shell 编程的一些基础知识,这里作各总结吧。
1,变量:
Shell变量分为本地变量,环境变量,位置变量和预定义变量
1)本地变量:本地变量是只能在用户写的shell脚本生命周期中有效的变量,在用户的shell退出之后,该变量就不存在了。一般的定义格式为:
local_variable_name=value(等号两边没有空格) 。 读取的时候需要用$符号
2)环境变量:相对与本地变量来说,环境变量对所有的用户均有效,而本地变量只是对本shell有效,环境变量可以在命令行中用export variable_name=value来设置,但是这样 设置的环境变量在用户退出本次shell的进程之后就会无效了,因此最好是在$HOME/.profile中设置。
3)位置参数:该参数是向shell脚本传递的参数,位置参数以空格分割开,为$0,$1,$2,$3....其中$0是shell脚本的文件名,例如在命令行输入以下内容:Shell_scropt_name param1 param2 param3 则$0 = Shell_script_name , $1=param1 , $2 = param2 , $3 = param3。
4)预定义变量:预定义变量和环境变量相似,也是在Shell一开始的时候就定义了的。常见的Shell预定义变量有:
$#:传递给脚本的参数的个数
$*:所有位置参数的内容
$?:命令之后的返回状态
$$ :当前进程的进程号(每个Shell相当于一个进程)
$0:当前执行的进程名
2,Shell中的引号的作用(“ ”(双引号) , ‘ ’(单引号) , ``(反引号))
1),双引号:关闭除$ , ``(反引号),\之外的任意字符或字符串。
如:str = "nice to meet you"
echo $str 和 echo "$str"输出是一样的,只是因为双引号不关闭$的功能。
2),单引号:关闭所有的符号, 比双引号更加严格。
echo '$str' 输出的是: $str 。
3),反引号:设置系统命令的输出变量,内容将作为一个系统的命令使用。通常用在双引号之内。
3,条件结构。
1)整数比较
#!/bin/bash #test x=5 y=8 if [[ $x -lt $y ]] then echo "$x < $y" elif [[ $x -gt $y ]] then echo "$x > $y" else echo "$x = $y" fi整数比较的操作符:
-eq , -ne , -gt , -ge , -lt , -le
2),字符串比较
#!/bin/bash #test str="ernie" if [[ $str == "Ernie" ]] then echo "It is Ernie." else echo "It is not Ernie." fi字符串比较的操作符:
== , != , < , > , -z (字符串为空), -n(字符串非空)
3),文件测试
#!/bin/bash #test thefile="test.sh" if [ -e $thefile ] #测试文件是否存在 then echo "File Exists." if [ -f $thefile ] #测试文件是否是一个普通文件 then echo "regular file." elif [ -d $thefile ] #测试文件是不是目录 then echo "directory." elif [ -h $thefile ] #测试文件是不是符号链接 then echo "symbolic link." fi else echo "File not Exists." fi exit文件测试操作符:
-e:文件是否存在
-f :文件是否是普通文件
-s:文件的长度是否为零
-d:文件是否是目录
-h:文件是否是链接
-r:文件是否是可读 -w -x
file1 -nt file2 :文件1是否比文件2新。