是否有一些内置工具可以识别-x
和--xxxx
作为开关,而不是参数,或者您是否必须遍历所有输入变量,测试破折号,然后解析参数?
使用 GNUgetopt
命令解析命令行参数时,我如何(如果可能)识别-?
为另一个选项?有没有办法在操作字符串中转义它?
我正在构建一个备份脚本,其中某些目录不应包含在备份存档中。
cd /;
find . -maxdepth 2 \
\( -path './sys' -o -path './dev' -o -path './proc' -o -path './media' -o -path './mnt' \) -prune \
-o -print
Run Code Online (Sandbox Code Playgroud)
这只会找到我想要的文件和目录。
问题是cpio
应该提供以下选项,以避免在恢复文件时出现权限问题。
find ... -depth ....
Run Code Online (Sandbox Code Playgroud)
如果我添加该-depth
选项,返回的文件和目录将包含我想要避免的文件和目录。
我真的不明白查找手册中的这些句子:
-prune True; if the file is a directory, do not descend into it. If
-depth is given, false; no effect. Because -delete implies
-depth, you cannot usefully use -prune and -delete together.
Run Code Online (Sandbox Code Playgroud) 我想编写一个 shell 脚本,它将接受一些带有一些选项的参数并打印这些参数。假设该脚本的名称是abc.ksh
. 该脚本的用法是 -
./abc.ksh -[a <arg>|b <arg>|c|d] <some_string>
现在我编写一个 shell 脚本,它将接受选项和参数
#!/bin/ksh
# Default Values
vara=","
varb=false
varbname=""
varc=false
# Scanning inputs
while getopts :a:b:cd option
do
case $option in
a) vara=$OPTARG;;
#shift $((OPTIND-1));;
b) varb=true
varbname=$OPTARG;;
#shift $((OPTIND-1));;
c) varc=true;;
#shift $((OPTIND-1));;
d) echo "Usage $0 \-[a|b|c|d] <filename>"
exit 0;;
\?) echo "Invalid option -$OPTARG. Please run '$0 -h' for help"
exit 1;;
:) echo "Option -$OPTARG requires an argument. Please run '$0 -d' for …
Run Code Online (Sandbox Code Playgroud)