Shell 脚本基础

条件表达式中的正则匹配

x=clt
if [[ $x =~ ^\.?clt$ ]]; then
    echo match
fi

匹配 clt 和.clt。注意正则表达式不能带双引号,亲测带双引号的 bash 和 sh 判断失败,zsh 可以判断成功。

脚本调试

参考这里

有时脚本出错不知道错在哪里,可以开启“调试”模式。

  • set -e:若指令返回值非零,则立即退出 shell.

  • set -x:在执行指令前,打印指令内容,包括执行的命令及其参数,常用于调试。

PS: 选项可以合并到一条 set 语句:set -ex. PPS: 也可以执行bash -ex some-script.sh等价于在脚本里面写set -ex.

♻️循环执行一个命令

几种写法,参考此处

while ! ping -c3 baidu.com; do
    sleep 2
done
echo succeed

!可以直接判否,判断一个命令是否执行成功。

until ping -c3 baidu.com; do
    sleep 2
done
echo succeed