简单学习了一下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新。