如何取消设置位置参数?


11

我该怎么做呢:

set foo bar baz
unset # Something else here
echo $# # Should ouput 0

这样做set ""$#仍将是1而不是0。

Answers:


14

好的,这只是愚蠢的,我发现使用它set --可以工作。


@Gilles:根据bash手册页,set -没有参数就不会改变位置参数。
卡姆(Camh)2011年

@我必须不同意。我在手册中看到了这一点:set-如果没有参数跟随该选项,则位置参数未设置。否则,即使其中一些位置以-开头,也将位置参数设置为args。
kdubs,

@kdubs您正在引用手册页set --。我用过set -(单个连字符),它表示:“如果没有参数,则位置参数保持不变。”
卡姆(Camh),

你是对的。我让他们感到困惑。我的屏幕使您-看起来像
kdubs

4

轻松取消所有位置参数的设置:

shift $#

要删除前三个位置参数:

shift 3

将“弹出”移出前N个位置参数。通过使用$#,我们可以获得位置参数的总数。因此,该命令弹出所有位置参数。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.