Korn 脚本参数
Korn script parameters
我看到了下面的代码片段,不确定 while 循环中 -? 的确切用途。我在多个站点和论坛中搜索了此参数,但没有得到任何确切答案。
请多多指教,谢谢
while [[ = -? ]]; do
case in
-a) a1=alligator ;;
-b) a2=bear ;;
-c) a3=cougar ;;
esac
shift
在 ksh 中,在双括号内,=
和 ==
运算符用于 模式匹配 :[[ string = pattern ]]
[1]
这些是 shell 路径名扩展模式。 ?
将匹配任何单个字符。
所以您要测试的是 </code> 是否匹配后跟任何单个字符的连字符。换句话说,第一个位置参数看起来像一个选项字符串吗?</p>
<p>[1] -- 要执行字符串相等性检查,您的模式要么不包含特殊的通配符,要么这些字符被引号或转义。</p>
<hr>
<p>IMO,一种更强大的选项解析方法是使用 <code>getopts
内置函数:
while getopts :abc opt; do
case $opt in
a) a1=alligator ;;
b) a2=bear ;;
c) a3=cougar ;;
:) print -u2 "error: missing required argument for -$OPTARG" ;;
?) print -u2 "unknown option: -$OPTARG" ;;
esac
done
shift $((OPTIND - 1))
我看到了下面的代码片段,不确定 while 循环中 -? 的确切用途。我在多个站点和论坛中搜索了此参数,但没有得到任何确切答案。
请多多指教,谢谢
while [[ = -? ]]; do
case in
-a) a1=alligator ;;
-b) a2=bear ;;
-c) a3=cougar ;;
esac
shift
在 ksh 中,在双括号内,=
和 ==
运算符用于 模式匹配 :[[ string = pattern ]]
[1]
这些是 shell 路径名扩展模式。 ?
将匹配任何单个字符。
所以您要测试的是 </code> 是否匹配后跟任何单个字符的连字符。换句话说,第一个位置参数看起来像一个选项字符串吗?</p>
<p>[1] -- 要执行字符串相等性检查,您的模式要么不包含特殊的通配符,要么这些字符被引号或转义。</p>
<hr>
<p>IMO,一种更强大的选项解析方法是使用 <code>getopts
内置函数:
while getopts :abc opt; do
case $opt in
a) a1=alligator ;;
b) a2=bear ;;
c) a3=cougar ;;
:) print -u2 "error: missing required argument for -$OPTARG" ;;
?) print -u2 "unknown option: -$OPTARG" ;;
esac
done
shift $((OPTIND - 1))