希曼日记

bash

解析命令行参数

getopts只能处理单个字符的选项

while getopts n:c: flag
  do
      case "${flag}" in
          install)
            install=true
            ;;
          version)
            version=${OPTARG}
            ;;
          url)
            url=${OPTARG}
            ;;
          *)
            echo "未知的命令行选项参数"
            exit 1
            ;;
      esac
  done

判断

-v: 检查变量是否已经被定义(不论其值是否为空)

if [[ -v $var1 ]] && [[ -v $var2 ]];
  echo "变量已经被定义"
fi

-n: 测试字符串是否为非空, 非空则为true

if [[ -n $var1 && $var2 ]]

-z: 测试字符串是否为空

if [[ -z $var1 && $var2 ]]
  1. 数字比较

    • -eq:等于
    • -ne:不等于
    • -gt:大于
    • -lt:小于
    • -ge:大于等于
    • -le:小于等于

    例如:

    bash复制代码

    if [ $num1 -eq $num2 ]; then echo "Numbers are equal" fi

  2. 字符串比较

    • =:相等
    • !=:不相等
    • -z:长度为零(空字符串)
    • -n:长度非零(非空字符串)

    例如:

    bash复制代码

    if [ "$str1" = "$str2" ]; then echo "Strings are equal" fi

  3. 文件测试

    • -e:文件存在
    • -f:普通文件存在
    • -d:目录存在
    • -r:可读
    • -w:可写
    • -x:可执行

    例如:

    bash复制代码

    if [ -e "$file" ]; then echo "File exists" fi

  4. 逻辑运算

    • &&:与
    • ||:或
    • !:非

    例如:

    bash复制代码

    if [ "$condition1" = "true" ] && [ "$condition2" = "true" ]; then echo "Both conditions are true" fi