shell脚本总结

前言

总结了工作中遇到的一些shell使用情况,不定期更新,留作后续参考。

总结

  1. shell函数以及传参
#/bin/bash
# 函数形式
add(){
    # 参数 1
    para1=$1
    # 参数 2
    para2=$2
    # 参数处理
    sum=`echo "$para1 $para2"|awk '{printf("%d",$1+$2)}'`
    echo $sum
    # 返回,注意,只能是整数0~255
    return 0
}
# 调用函数 add
add 1 2
# 打印执行结果(即为return 的返回值)
echo $?
# 想要得到函数处理结果,尤其是需要获取字符串时,可以使用此方式
a=$(add 1 2)
echo $a

return:“假的”返回; echo:“真的”返回

  1. 数组
array=(1 2 3 "a" b c)
for i in ${array[*]}
do
    echo $i
done
  1. case
input=1
case $input in
    1)
    echo "one"
    ;;
    2)
    echo "two"
    ;;
    3|4|5|6)
    echo "$input"
    ;;
    *)
    echo "not find"
    ;;
esac
  1. if
# [[]]中间的条件需要和左右括号各间隔一个空格
if [[ 条件1 ]]; then
elif [[ 条件2 ]]; then
else
fi
  1. 调用linux指令,并捕获返回值
a=`ls`
a=`cat 1.txt`
a=$(ls)
  1. 字符串处理
a="1/2/3.txt"
# 删除掉最后一个 / 及 / 左边的字符串,得到 3.txt
b=${a##*/}
# 删除最后一个 / 及 / 右边的字符串,得到 1/2
c=${a%/*}
# 删除最后一个 . 及 . 右边的字符串,得到 3
d=${b%.*}
# 从第4位开始截取a, 得到/3.txt
echo ${a:3}
# 获取字符串a的长度
echo ${#a}
# 大写转小写
tst="THIS IS A TEST"
tst2=`echo "$tst" | awk '{print tolower($0)}'`
# 小写转大写
tst3=`echo "$tst2"| awk '{print toupper($0)}'`

参考博客https://www.cnblogs.com/yutingliuyl/p/7236501.html

  1. 询问
a=1
if [[ a==1 ]]; then
    echo -e "
"
    # 打印红色提示
    printf  "33[0;31mWarning: a=$a33[0m";
    echo -e "
"
    # 询问是否继续
    read -r -p "Are you sure to be continue? [Y/n] " input
    case $input in
        [yY][eE][sS]|[yY])
        echo "ok, let's continue"
        echo "-----------------------------------------"
        ;;
        [nN][oO]|[nN])
        exit 0
        ;;
        *)
        echo "Invalid input..."
        exit 1
        ;;
    esac
fi
  1. 运算符
-e file/dir 判断文件或文件夹是否存在,如果是,返回true
$a -eq $b 判断a是否等于b,等于则返回true
$a -ne $b 判断a是否不等于b,等于则返回false
$a -gt $b 判断a是否大于b,如果是,返回true
$a -lt $b 判断a是否小于b,如果是,返回false
$a -ge $b 判断a是否大于等于b,如果是,返回true
$a -le $b 判断a是否小于等于b,如果是,返回true
  1. 多行注释
:<<EOF
这是注释
EOF

多行注释还有其它形式,具体可以参考菜鸟教程

  1. 传递参数
$# 传递到脚本的参数个数
$* 以一个单字符串显示所有向脚本传递的参数。如"$*"用__"__括起来,以"$1 $2 ... $n"的形式输出所有参数
$$ 脚本运行的当前ID号
$! 后台运行的最后一个进程的ID号
#@ 与__$*__相同,但是使用时加引号,并在引号中返回每个参数。如"#@"用__""__括起来,以"$1" "$2" ... "$n" 的形式输出所有参数
$- 显示Shell使用的当前选项,与__set__命令功能相同
$? 显示最后命令的退出状态。0表示没有错误,其它任何值表示有错误。

8,9,10参考菜鸟教程https://www.runoob.com/linux/linux-shell.html

原文地址:https://www.cnblogs.com/brian-sun/p/15481517.html