shell编程


  • 单引号保持字符串的原型输出,而双引号进行了命令替换。
  • 本地变量:作用域为当前代码段
    • 通过set进行声明,set可以省略
    • unset可以撤销本地变量和环境变量
  • 环境变量:作用域为当前shell进程或子进程
    • 通过export进行声明
  • 位置变量
    • $1、$2。。。
    • shift:参数的移动
1 #!/bin/bash
2 while [ $# != 0 ];do
3 echo "第一个参数为:$1,参数个数为:$#"
4 shift
5 done
  • 特殊变量
    • $? :上一次命令执行状态(0为真 1为假)
    • $$:Shell本身的PID(ProcessID)
    • $!:Shell最后运行的后台Process的PID
    • $-:使用Set命令设定的Flag一览
    • $*:所有参数列表。如"$*"用「"」括起来的情况、以"$1 $2 … $n"的形式输出所有参数。
    • $@:所有参数列表。如"$@"用「"」括起来的情况、以"$1" "$2" … "$n" 的形式输出所有参数。
    • $# :添加到Shell的参数个数
    • $1~$n:添加到Shell的各参数值。$1是第1参数、$2是第2参数…。
  • 输出重定向
    • >
    • >>
    • $>
    • /dev/null
    • /dev/zero
  • bash的书写格式
    • #!/bin/bash
  • 条件表达式
    • [ expre ]
    • [[  expre ]]
    • test expre
  • 整数的比较
    • -eq                            相等
    • -ne                                  不等
    • -gt                                   大于
    • -lt                                    小于
    • -ge                                  大于等于
    • -le                                 小于等于
  • 字符串比较
    • str1 = str2     当两个串有相同内容、长度时为真
    • str1 != str2      当串str1和str2不等时为真
    • -n str1        当串的长度大于0时为真(串非空)
    • -z str1        当串的长度为0时为真(空串)
    • str1         当串str1为非空时为真
  • 文件判断
    • -r file     用户可读为真
    • -w file     用户可写为真
    • -x file     用户可执行为真
    • -f file     文件为正规文件为真
    • -d file     文件为目录为真
    • -c file     文件为字符特殊文件为真
    • -b file     文件为块特殊文件为真
    • -s file     文件大小非0时为真
    • -t file     当文件描述符(默认为1)指定的设备为终端时为真
  • 逻辑关系
    • 与 &&
    • 或 ||
  • 条件判断
if condition
then
    ...
fi
#############################
if condition;then
    ...
fi
#############################
if condition
then
    ...
else
    ...
fi
#############################
if condition1
then
    ...
elif condition2 
then 
    ...
else
    ...
fi
for var in item1 item2 ... itemN
do
    ...
done
#############################
while condition
do
    ...
done
#############################
#!/bin/sh
int=1
while(( $int<=5 ))
do
        echo $int
        let "int++"
done
#############################
while :
do
    ...
done
#############################
until condition
do
    ...
done
casein
模式1)
    ...
    ;;
模式2)
    ...
    ;;
esac
  • 算数运算表达式
    • let c=$a+$b
    • c=$[$a+$b]
    • c=$(($a+$b))
    • c=`expr $a + $b` 两数相加
    • c=`expr $a - $b` 两数相减
    • c=`expr $a \* $b` 两数相乘
    • c=`expr $a / $b` 两数相除
  • bash常用命令
    • -n 查看脚本是否语法错误
    • -x 调试脚本