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"
grep获取行号:
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
shell最简单脚本实例2 判断参数个数小于3个:
if [ $# -lt 3 ] ; then
echo "please input 3 parameter"
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小时内删除。