gpt4 book ai didi

linux - 通过命令行将标志和其他参数一起传递给 ksh 脚本

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:38:55 25 4
gpt4 key购买 nike

我正在尝试编写一个 ksh 脚本,该脚本采用一个可选标志和两个强制字符串作为参数。该标志表示为 -a。因此,该命令在正确时看起来类似于以下内容之一:

  1. command.sh -a -b abc -c 123
  2. command.sh -b xyz -c 789

我在脚本中使用了以下代码:

while getopts "a:b:c:" args
do
case $args in

a) # Flag
flag=1
;;
b) # str1
str1=$OPTARG
;;
c) # str2
str2=$OPTARG
;;
*) # usage
echo "- - - - "
exit 0
;;
esac
done

if [[ -z $str1 || -z $str2 ]]
then
echo "Incomplete arguments supplied\n"
exit 1
fi

...

当我执行 1(见上文)时这样做会抛出消息 Incomplete arguments supplied,而 2(见上文)工作正常。

谁能指出哪里出了问题并建议改正?

谢谢...

最佳答案

选项字母后的冒号 (:) 指定选项(又名标志)需要一个参数;因为在 'a' 之后有一个冒号 (:),getopts 期望参数与 -a 一起使用;试试这个:

while getopts "ab:c:" args

关于linux - 通过命令行将标志和其他参数一起传递给 ksh 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45140522/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com