shell编程(一)

前端之家收集整理的这篇文章主要介绍了shell编程(一)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

shell 编程

定义变量 `x=664` 在变量名.等号和值之间不能有空格
输出指令 `echo` echo $x
引号的区别 "" '' ""会将空格和分割都不转意,''会将值原样赋值
export 将变量升为全局变量
$()或`` 可以获取命令的返回值
$? 表示上一个命令退出的状态
$$ 表示当前进程编号
$0 表示当前脚本名称

$n 表示n位置的输入参数(n代表数字,n>=1)

$#     表示参数的个数,常用于循环
$*和$@ 都表示参数列表 
expr m + n 计算整数计算
$(((2+3)*4)) (2+3)*4计算
  1. 循环for
for@H_301_11@ n in@H_301_11@ 列表
    do@H_301_11@ 
    echo@H_301_11@ $n@H_301_11@
    done@H_301_11@或    
     for@H_301_11@ ((i = 0@H_301_11@; i <= 5@H_301_11@; i++))
    do@H_301_11@
        echo@H_301_11@ "welcome $i@H_301_11@ times"@H_301_11@
    done@H_301_11@
  1. 循环while
while@H_301_11@ expression
    do@H_301_11@
    command
    …
    done@H_301_11@
        i=1@H_301_11@
    while@H_301_11@ ((i<=3@H_301_11@))
    do@H_301_11@
      echo@H_301_11@ $i@H_301_11@
      let@H_301_11@ i++
    done@H_301_11@
  1. case
case@H_301_11@ $1@H_301_11@ in@H_301_11@
    start)
        echo@H_301_11@ "starting"@H_301_11@
        ;;
    stop)
        echo@H_301_11@ "stoping"@H_301_11@
        ;;
    *)
        echo@H_301_11@ "Usage: {start|stop} “ esac@H_301_11@
  1. if 判断
if@H_301_11@ [ 条件 ]
      then@H_301_11@ 
        echo@H_301_11@ 
       elif@H_301_11@ [ 条件 ]
         echo@H_301_11@ 
         else@H_301_11@ 
         echo@H_301_11@ 
    fi@H_301_11@

例子

#!/bin/bash@H_301_11@
read@H_301_11@ -p "please input your name:"@H_301_11@ NAME
#printf '%s\n' $NAME@H_301_11@
if@H_301_11@ [ $NAME@H_301_11@ = root ]
        then@H_301_11@
                echo@H_301_11@ "hello ${NAME}@H_301_11@,welcome !"@H_301_11@
        elif@H_301_11@ [ $NAME@H_301_11@ = wang ]
                then@H_301_11@
                        echo@H_301_11@ "hello ${NAME}@H_301_11@,welcome !"@H_301_11@
        else@H_301_11@
                echo@H_301_11@ "get out here !"@H_301_11@
fi@H_301_11@

条件:非空返回true,可使用$?验证(0为true,>1为false)
[ condition ] && echo OK || echo notok
条件满足,执行后面的语句

常用判断条件

  • = 字符串比较
  • -lt 小于
  • -le 小于等于
  • -eq 等于
  • -gt 大于
  • -ge 大于等于
  • -ne 不等于
    权限
  • -r 有读的权限
  • -w 有写的权限
  • -x 有执行的权限
  • -f 文件存在并且是一个常规的文件
  • -s 文件存在且不为空
  • -d 文件存在并是一个目录
  • -b文件存在并且是一个块设备
  • -L 文件存在并且是一个链接
    shell 自定义函数
    格式:
    function name()
    {
    echo ” “;
    return []
    }
    例子:
#!/bin/bash@H_301_11@
s1=$1@H_301_11@;
s2=$2@H_301_11@;
function sum@H_301_11@@H_301_11@()
{
  sum=$(($1@H_301_11@+$2@H_301_11@));
  echo@H_301_11@ $((s1+s2));
  return@H_301_11@ $sum@H_301_11@;
}
sum 3@H_301_11@ 4@H_301_11@;
total=$?;
echo@H_301_11@ $total@H_301_11@,$?;

注:$?返回上个语句的返回值

sh -vx fun.sh 可以看到执行的过程,但是不停
如图:

猜你在找的Bash相关文章