检查参数个数和访问参数
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
浙公网安备 33010602011771号