【问题标题】: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 会打印该变量的值。整数怎么可能是变量? -> 第二个问题

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

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

【问题讨论】:

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

标签: linux bash


【解决方案1】:

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

【讨论】:

  • 非常感谢!这有帮助。
【解决方案2】:

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

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

【讨论】:

    猜你喜欢
    • 2014-04-08
    • 1970-01-01
    • 2022-12-16
    • 1970-01-01
    • 2012-04-26
    • 2016-12-10
    • 2014-12-01
    • 1970-01-01
    • 2016-07-13
    相关资源
    最近更新 更多