shell脚本接收来自命令行传入的参数:
第一个参数用$1表示,第二个参数用$2表示,以此类推。。
写一个简单的传参数脚本来测试:
#!/bin/bash
if [ $1 == "start" ]
then
echo "do start"
elif [ $1 == "stop" ]
then
echo "do stop"
else
echo "Please make sure the positon variable is start or stop."
fi
保存为test.sh 执行 ./test.sh start 或./test.sh stop
awk的结果如何写入数组中:
写了一个简单的功能:
B=(`awk '/insert overwrite table/ {print $4}' $1`)
echo ${B[1]}
echo ${#B[@]} 输出数组元素个数
如何在变量中定义双引号:
用单引号 lstr='tblist="1111"'
echo $lstr
tblist="1111"
awk的结果如何写入数组中:
写了一个简单的功能:
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.sh
if判断:
grep -nw "k=0" automan.sh
if判断:
?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 旧,则为真
-z string 如果 string 长度为零,则为真
-n string 如果 string 长度非零,则为真
string1 = string2 如果 string1 与 string2 相同,则为真
string1 != string2 如果 string1 与 string2 不同,则为真
num1 -eq num2 等于
num1 -ne num2 不等于
num1 -lt num2 小于
num1 -le num2 小于或等于
num1 -gt num2 大于
num1 -ge num2 大于或等于
实例1 判断参数是否为空:
if [ -z "$1" ];then
echo "please input parameter"
exit
else
echo "parameter 1: $1"
fi
echo "please input parameter"
exit
else
echo "parameter 1: $1"
fi
shell最简单脚本实例2 判断参数个数小于3个:
if [ $# -lt 3 ] ; then
echo "please input 3 parameter"
exit
else
for var in $*; do
echo "var is $var"
done
fi
exit
else
for var in $*; do
echo "var is $var"
done
fi
linux if命令
无论什么编程语言都离不开条件判断。SHELL也不例外。 if list then do something here elif list then do another thing here else do something else here fi 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 int2 int1大于int2为真 int1 -ge int2 int1大于等于int2为真 int1 -lt int2 int1小于int2为真 int1 -le int2 int1小于等于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里使用的时候,他的功能变得强大了。 |
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论