$#、$1 和 $2 是啥意思? [复制]

Posted

技术标签:

【中文标题】$#、$1 和 $2 是啥意思? [复制]【英文标题】:What do $#, $1 and $2 mean? [duplicate]$#、$1 和 $2 是什么意思? [复制] 【发布时间】:2016-08-18 20:32:20 【问题描述】:

我的问题是关于 bash 程序的,它在这本关于编程树莓派(bash、Python、C)的大书中。

有一个示例程序来展示 if 如何在 bash 中工作,但是无论阅读多少次程序的描述,它似乎都无法正确解释它是什么确实(我知道如果我想要一本 1000 页的书里的完整 bash 教程,这太过分了,这就是我来这里的原因)

代码如下:

#!/bin/bash

if test $# -ne 2; then
    echo "You have to pass 2 arguments to the command"
    #argument / parameter, whatever you prefer
    exit 1
else
    echo "Argument 1: $1, argument 2: $2"
fi

我明白,-ne 2 的意思是:不等于 2,所以它会检查 $# 是否等于 2,但我不明白它的作用($#)。 -> 第一个问题

else 中,它会打印$1$2,但我认为$variablename 会打印该变量的值。整数怎么可能是变量? -> 第二个问题

是的,我用谷歌搜索并没有找到任何有用的东西(可能搜索不够?),这正是我在这里的原因。

我将不胜感激任何形式的帮助,无论是我自己阅读的链接,还是简短的解释。 在此先感谢:)

【问题讨论】:

这在你可以搜索的手册页和静态网页中也很容易找到。不确定这是否值得 *** 响应。 如果您打算使用bash,我强烈建议您阅读手册!在终端中,man bash 或 Bash Reference Manual,在 PDF 文件中。 【参考方案1】:

$# 是指运行时接收到的参数个数,而不是具体的参数。执行脚本时,$1 被命令行中位置 1 中的任何内容替换。

【讨论】:

非常感谢!这有帮助。【参考方案2】:

$#表示命令行参数或位置参数的个数

$1$2分别表示传递的第一个和第二个命令行参数

【讨论】:

以上是关于$#、$1 和 $2 是啥意思? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

这里的“2>&1”是啥意思? [复制]

bash 中的“1>&2”是啥意思? [复制]

Bash:2>&1 是啥意思? [复制]

$做啥? $0 $1 $2 在 shell 脚本中是啥意思? [复制]

退出(0)和退出(1)是啥意思? [复制]

0dp 和权重是啥意思? [复制]