bash脚本

命令使用

  1. `cmd`,$(cmd) // 反引号执行命令,可以将结果保存到变量
  2. "$(dirname "$path")" // 获取path的上级目录全路径
  3. "$(basename "$path")" // 获取path的名称
  4. echo PWD:`pwd` // 显示当前路径
  5. exit // 退出
  6. $(date +%s) // 自1970年到现在的秒数
  7. $(date +%Y%m%d-%H%M%S) // 年月日时分秒
  8. ls $DIR | grep .jar | awk '{print "'$DIR'/"$0}' | tr "\n" ":" // 把目录里的所有jar文件用":"组成字符串
  9. . data.properties,source data.properties // 加载属性文件的变量成为临时环境变量
  10. .source common.sh // 加载通用函数
  11. grep $old -rl $path | xargs -r sed -i "s#$old#$new#g" // 替换path下所有文件内容old->new
  12. var=${1:-"DefaultValue"} // 设置var值,输入参数1不存在则是默认值。参考

参数使用

  1. 输入参数使用:$N。$1第一个参数
  2. 变量定义和赋值,等号左右不能有空格:P1="ppp"
  3. 变量使用:${P1},$P1
  4. declare -a array // 数组定义
  5. declare -A map // 字典定义

常用语法

获取函数返回值

function fa() {
  name=$1
  echo hello${name}
}
name1=andrew
text=$(fa ${name1})

获取输入

read -e -p "Please input the correct option: " Number
if [[ ! "${Number}" =~ ^[1-5,q]$ ]]; then
echo "${CFAILURE}input error! Please only input 1~4 and q${CEND}"
else
case "${Number}" in

判断

// 输入参数1是否存在
if [ -n "$1" ] ;then
    echo "exist"
else
    echo "not exist"
fi

// 变量是否存在
if [ ! ${var} ]; then
fi

// 大小写忽略的正则式匹配
if echo "${DB_Ver}" | grep -Eqi '^8.0.|^5.7.|^10.2.'; then
fi

// 命令执行
if ! command; then
  echo "cmd failed";
  exit 1;
fi

// 命令执行结果判断
netstat -apn | grep 8080
if [ "$?" == 0 ]; then // 命令返回是空
fi

// 目录存在
if [ ! -d "${dir}" ]; then
fi

// 文件存在
if [ -f "${file}" ]
then
fi

循环

for item in ${array[@]}; do
  echo "${item}"
done

for k in ${!map[*]}; do
    key=${k}
    val=${map[$k]}
done

方案

等待服务启动

while [ -n "`ps -ef | grep mysql | grep -v grep | awk '{print $2}'`" ]; do
    sleep 1
done

属性文件读取

while read -r line; do
    if [ "$line" != "" ]; then
        IFS='=' read -r k v <<< $line
        echo "load key($k), val($v)"
        map[$k]=$v
    fi
done < $file

资料

语法

工具

方案

wangyaqi.cn all right reserved,powered by Gitbook该文件修订时间: 2020-01-29 16:06:14

results matching ""

    No results matching ""

    results matching ""

      No results matching ""