第一个参数用$1表示,第二个参数用$2表示,以此类推。。
写一个简单的传参数脚本来测试:
#!/bin/bash
if [ $1 =="start" ]
then
echo"do start"
elif [ $1 =="stop" ]
then
echo"do stop"
else
echo "Pleasemake sure the positon variable is start or stop."
fi
保存为test.sh执行./test.sh start或./test.sh stopawk的结果如何写入数组中:写了一个简单的功能:B=(`awk '/insert overwrite table/ {print $4}' $1`)
echo ${B[1]}
echo ${#B[@]}输出数组元素个数如何在变量中定义双引号:用单引号lstr='tblist="1111"'
echo $lstr
tblist="1111"grep获取行号:grep -nw "k=0" automan.shif判断:
?b当file存在并且是块文件时返回真
-c 当file存在并且是字符文件时返回真
-d 当pathname存在并且是一个目录时返回真
-e 当pathname指定的文件或目录存在时返回真
-f 当file存在并且是正规文件时返回真
-g 当由pathname指定的文件或目录存在并且设置了SGID位时返回为真
-h 当file存在并且是符号链接文件时返回真,该选项在一些老系统上无效
-k 当由pathname指定的文件或目录存在并且设置了“粘滞”位时返回真
-p 当file存在并且是命令管道时返回为真
-r 当由pathname指定的文件或目录存在并且可读时返回为真
-s 当file存在文件大小大于0时返回真
-u 当由pathname指定的文件或目录存在并且设置了SUID位时返回真
-w 当由pathname指定的文件或目录存在并且可执行时返回真。一个目录为了它的内容被访问必然是可执行的。
-o 当由pathname指定的文件或目录存在并且被子当前进程的有效用户ID所指定的用户拥有时返回真。
-eq等于
-ne不等于
-gt大于
-lt小于
-le小于等于
-ge大于等于
-z空串
=两个字符相等
!=两个字符不等
-n非空串
-e filename如果filename存在,则为真
-d filename如果filename为目录,则为真
-f filename如果filename为常规文件,则为真
-L filename如果filename为符号链接,则为真
-r filename如果filename可读,则为真
-w filename如果filename可写,则为真
-x filename如果filename可执行,则为真
filename1 -nt filename2如果filename1比filename2新,则为真
filename1 -ot filename2如果filename1比filename2旧,则为真
-zstring如果string长度为零,则为真
-nstring如果string长度非零,则为真
string1 = string2如果string1与string2相同,则为真
string1 != string2如果string1与string2不同,则为真
num1 -eq num2等于
num1 -nenum2不等于
num1 -ltnum2小于
num1 -lenum2小于或等于
num1 -gtnum2大于
num1 -genum2大于或等于
实例1 判断参数是否为空:
if [ -z"$1" ];then
echo "please input parameter"
exit
else
echo "parameter 1: $1"
fi
实例2判断参数个数小于3个:
if [ $# -lt 3 ] ;then
echo "please input 3parameter"
exit
elsefor var in $*; doecho "var is $var"
donefi
linux if命令
无论什么编程语言都离不开条件判断。SHELL也不例外。
if list thendo something hereelif list thendo another thing hereelsedo something else herefi
EX1:
#!/bin/sh
SYSTEM=`uname -s` #获取操作系统类型,我本地是linux
if [ $SYSTEM = "Linux" ] ; then #如果是linux的话打印linux字符串echo "Linux"
elif [ $SYSTEM = "FreeBSD" ] ; then
echo "FreeBSD"
elif [ $SYSTEM = "Solaris" ] ; then
echo "Solaris"
else
echo "What?"
fi #ifend
基本上和其他脚本语言一样。没有太大区别。不过值得注意的是。[]里面的条件判断。
1字符串判断
str1 = str2当两个串有相同内容、长度时为真str1 != str2当串str1和str2不等时为真-n str1当串的长度大于0时为真(串非空)
-z str1当串的长度为0时为真(空串)
str1当串str1为非空时为真
2数字的判断
int1 -eq int2两数相等为真int1 -ne int2两数不等为真int1 -gt int2int1大于int2为真int1 -ge int2int1大于等于int2为真int1 -lt int2int1小于int2为真int1 -le int2int1小于等于int2为真
3文件的判断
-r file用户可读为真-w file用户可写为真-x file用户可执行为真-f file文件为正规文件为真-d file文件为目录为真-c file文件为字符特殊文件为真-b file文件为块特殊文件为真-s file文件大小非0时为真-t file当文件描述符(默认为1)指定的设备为终端时为真
3复杂逻辑判断
-a 与-o或!非
结尾
语法虽然简单,但是在SHELL里使用的时候,他的功能变得强大了。