gpt4 book ai didi

linux - 在 bash 中执行 shell 脚本时如何控制用户定义的命令?

转载 作者:太空宇宙 更新时间:2023-11-04 03:56:39 24 4
gpt4 key购买 nike

我正在创建一个有自己的命令(或选项)的 shell 脚本。简而言之,我用于执行脚本的命令行是(在终端中):./myscript.sh -o:1,2,3,4./myscript.sh -e:2,3,4。到目前为止,代码(选项部分)如下所示:

myscript.sh

for i
do
case "$i" in
"-o:"*|"--only:"*)
# check if 1 is not included (if it is then exit)
;;

"-e:"*|"--except:"*)
# check if 1 is excluded (if it is then exit)
;;

*)
echo -e "invalid option\nTry './audit.sh --help' for help"
exit
;;
esac
done

说明:

此代码的目的是对用户通过 ./myscript.sh -o:1,2,3,4 传递的所有值求和,或减去 ./myscript.sh -e:2,3,4 的值。 o 是“唯一”选项,它仅将从此选项传递给脚本的数字相加。 e 是“排除”选项,它排除用户定义的值并从 100 中减去这些值。

我有一个限制,即数字 1 必须始终存在(无论是加还是减)。所以我不能排除数字 1。以下是非法用户输入命令 (./myscript.sh -e:1,2,3,4) 和 (./myscript.sh -o:2,3,4) 的一些示例。

如何检查数字 1 是否始终包含在 only 选项中,以及数字 1 是否未从 exclude 选项中排除?谢谢。

编辑:我想要采用的方法是使用awk。有什么建议吗?

最佳答案

  1. 获取要检查的值
  2. 前后加逗号
  3. 检查,1,是否为子字符串

实现:

i="--only:3,4,5"

value=${i#*:} # Strip prefix up to colon

if [[ ,$value, == *,1,* ]] # Check if ,1, is a substring
then
echo "You have a 1 in your list."
else
echo "You're missing 1"
exit 1
fi

要反转检查排除,您可以使用!=

关于linux - 在 bash 中执行 shell 脚本时如何控制用户定义的命令?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24459968/

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