shell小记

时间:2020-12-15 07:09:56

1.以#!/bin/bash 开头
2.执行方式 bash sh ./ `script`
3.变量: 系统变量  自定义变量  --->export 可导出为全局环境变量
        set显示所有shell变量  unset 取消变量     readonly静态变量不能被unset
4.获取命令返回值
    A=`ls -al`   =====  A=$(ls-al) -----> echo $A
5.参数取值
    &*      全部参数
    $@        无引号时代表全部参数,有引号代表全部参数的数组
    $#        传入参数的个数
    $n        代表传入的第几个参数,0代表shell本身  第10位以上的参数${10}
    
    $$        当前进程号
    $!        后台运行的最后一个进程号
    $?        上一个命令执行的返回状态 0代表成功
6.运算符
    $((calc))   或者   $[cals]   
    expr `clac`       直接输出了
            例:expr `expr 2 + 3` \* 4    -->20
                A=[(2+3)*4]  echo $A      -->20
                
7.条件判断
    [ condition ]    注意:前后有空格
    23是否大于22                          [ 23 -gt 22 ]
    test.txt是否有读权限                [ -r test.txt ]
    hive.log是否存在                    [-e /hive.log]
8.分支语句
     if   case     

#!/bin/bash
if [ $ = ] ; then 不换行写分号
echo
elif [ $ = ] 换行不用写
then
echo
else else不写then
echo
fi #!/bin/bash
case $ in
)
echo
;; 注意双分号
)
echo
;;
*) 没匹配的执行这个
echo
;;
esac

  for      while

s=
for ((i=;i<=;i++)) 也可 ;do
do
s=$[$s+$i]
done echo $s for x in ; do
echo $x
done for y in "$@"
do
echo $y
done i=
s=
while [ $i -le ] 用此类型比较符
do
s=$[$s+$i]
i=$[$i+]
done
echo $i
echo $s

9.控制台读入信息
    read -t 10 -p "等待10秒读入姓名" NAME     echo $NAME
10.函数
    basename    获取文件名(去除目录部分)
    dirname        获取目录(去除文件名部分)
    
    自定义函数   function funName()
                {    
                    方法体(没有return时,最后一条语句作为返回值,$?获取)
                }