linux shell示例代码

1. shell 参数

  • $0 表示程序名
  • $1~$9 表示位置参数,超过 9 个参数时,使用 ${10} 形式
  • $# 表示参数的个数
  • $* 所有参数当作一个整体来使用
  • $@ 把每个参数作为一个字符串来使用,可使用 for 循环来遍历

下面来看一个示例:

#!/bin/sh

echo $0
echo $#

if [ $# -gt 0 ]; then
    echo $*
    for p in $@
    do
        echo $p
    done
fi

if [ $# -gt 10 ]; then
    echo ${11}
fi

2. shell if 条件判断

2.1 语法

if 语句:

if [ $# -gt 0 ]; then
    echo $*
    for p in $@
    do
        echo $p
    done
fi

if else 语句:

if [ $# -gt 10 ]; then
    echo ${11}

else
    echo "param count less than or equal 10"
fi

if elif else 语句:

if [ $# -lt 5 ]; then
    echo "less than 5"
elif [ $# -lt 10 ]; then
    echo "less than 10"
elif [ $# -lt 15 ]; then
    echo "less than 15"
else
    echo "greater than or equal 15"
fi

2.2 shell 数字大小判断

  • 大于 -gt (greater than)
  • 小于 -lt (less than)
  • 大于或等于 -ge (greater than or equal)
  • 小于或等于 -le (less than or equal)
  • 不相等 -ne (not equal)
  • 相等 -eq (equal)

示例:

if [ $# -gt 0 ]; then
    echo $*
    for p in $@
    do
        echo $p
    done
fi

2.3 shell 字符串相等判断

字符串相等判断:

type="client"
if [ "$type"x = "client"x ]; then
    echo "client"
else
    echo "server"
fi

字符串不等判断:

type="client"
if [ "$type"x != "client"x ]; then
    echo "server"
else
    echo "client"
fi

3. shell 循环

3.1 for 循环

# case1
for p in $@
do
    echo $p
done


# case2
for item in "a1 a2 a3 a4 a5"
do
    echo $item
done

# case3
sum=0
for ((i=1; i<=100; i++))
do
    ((sum += i))
done
echo $sum

3.2 while 循环

i=1
sum=0
while ((i <= 100))
do
    ((sum += i))
    ((i++))
done
echo $sum

4. shell 函数

无参数的函数:

main()
{
    echo "main"
}
main

带参数的函数:

main()
{
    if [ $# -gt 0 ]; then
        echo $*
        for p in $@
        do
            echo $p
        done
    fi
    echo "main"
}
main b1 b2 b3 b4 b5

5. shell 执行命令

直接写入命令就行,如:

#!/bin/sh
date

执行字符串命令:

str="date"
eval $str

获取命令执行输出的信息:

str="date"
result=`eval $str`
echo $result

$? 表示最近一个命令的退出码

6. 其他

  • set +e,当这句之后,遇到非 0 的返回值,会继续执行
  • set -e,当这句之后,遇到非 0 的返回值,会退出执行

文章评论

0条评论