当我使用 bashshift
命令时,这会改变参数计数$#
吗?
作者注:当我遇到这个问题时,我(还)没有在这个社区中找到它。因此,我只是尝试了一下并得到了答案。因为我认为它可能会帮助其他人,所以我将我在这里学到的知识作为 一个自我回答的问题发布了出来。
Pau*_*wen 10
是的,标准中明确要求:
shift [n]
位置参数将被移动。位置参数 1 应分配参数 (1+n), [...]的值,并且更新参数“#”以反映位置参数的新数量。
考虑这个脚本:
#!/usr/bin/env bash
echo "$#"
shift
echo "$#"
Run Code Online (Sandbox Code Playgroud)
调用它 likescript-file first second third
将打印3
后跟2
.
这意味着我们可以执行以下操作:
#!/usr/bin/env bash
while [[ "$#" > 0 ]] ; do
echo "$1"
shift
done
Run Code Online (Sandbox Code Playgroud)
...这将在他们自己的行上一个一个地打印参数。
归档时间: |
|
查看次数: |
1727 次 |
最近记录: |