gpt4 book ai didi

bash - 什么 while(($#));做 ...;转移; done 在 bash 中是什么意思,为什么有人会使用它?

转载 作者:行者123 更新时间:2023-12-03 20:32:40 26 4
gpt4 key购买 nike

我在网上的 bash 脚本教程中遇到了以下 while 循环:

while(($#)) ; do
#...
shift
done

我不明白在 while 循环中使用位置参数基数。我知道什么 shift command 可以,但是 while 语句与 shift 结合使用是否有一些特殊用途? ?

最佳答案

每次做shift ,位置参数的数量减一:

$ set -- 1 2 3
$ echo $#
3
$ shift
$ echo $#
2

所以这个循环会一直执行,直到每个位置参数都被处理完; (($#))如果至少有一个位置参数,则为真。

这样做的一个用例是(复杂的)选项解析,其中您可能有带参数的选项(想想 command -f filename ):选项的参数将被处理并删除,并附加 shift .

有关复杂选项解析的示例,请参阅 BashFAQ/035ComplexOptionParsing .第二个链接的最后一个例子, Rearranging arguments , 使用准确的 while (($#))技术。

关于bash - 什么 while(($#));做 ...;转移; done 在 bash 中是什么意思,为什么有人会使用它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42677433/

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