检查参数个数和访问参数

if [ $# -eq 0 ]; then
    echo "Usage: $0 ... "
    exit 1
fi
  • $#表示传入的参数个数
  • $0表示脚本名
  • $1表示第一个参数,依次类推
  • $@表示所有参数

检查是否具有管理员权限

if [ "$(id -u)" -ne 0 ]; then
    echo "Requires sudo privileges. Please run it with sudo."
    exit 1
fi
# 执行一些需要sudo的命令
  • id -u 命令返回当前用户的 UID(用户标识符)。对于 root 用户,UID 是 0,而普通用户的 UID 通常是大于 0 的

  • $(...) 是命令替换,将 id -u 命令的输出作为一个值

解析命令行选项

# options: -a -b 1 -c
while getopts "ab:c" opt; do
    # switch-case
    case $opt in
        a)
            # code for a
            ;; # break
        b)
            # code for b
            echo "option value: $OPTARG"
            ;;
        c)
            # code for c
            ;;
        *)
            # invalid option
            exit 1
            ;;
    esac
done
# 检查是否有参数
if [ -n "$OPTARG" ]; then
  echo "no arg"
fi 
  • getopts 是一个内建的命令,用来 解析命令行选项(选项前带有 -)。它的作用是遍历命令行参数,提取每个选项并进行相应的处理

  • "ab:c":这里的 "ab:c" 是一个字符串,表示接受的选项(即 -a、-b 和 -c)。每个字母对应一个选项。其中,"b:"后面接上一个":"表示有选项值

  • opt 这是 getopts 用来保存当前选项值的变量

  • OPTARG 存储当前正在处理的选项的选项值

检查上一个命令的执行情况

if [ $? -ne 0 ]; then
  echo "execution failed"
  exit 1
fi

遍历目录下指定后缀名的文件

DIR="/home"
for file in $(find "$DIR" -type f -name "*.C"); do
    echo "Found C file: $file"
done

或者

for f in *.c; do
  echo "$f"
done

去掉字符串前缀和后缀

filename="tcp_example.c"

# 去掉文件的前缀 tcp_ 和后缀 .c
base_name="${filename#tcp_}"    # 去掉前缀 tcp_
base_name="${base_name%.c}"     # 去掉后缀 .c

echo "$base_name"  # 输出: example
 posted on 2025-03-13 23:12  Dylaris  阅读(13)  评论(0)    收藏  举报