【问题标题】:Run simple programme using unix shell使用 unix shell 运行简单的程序
【发布时间】:2015-02-05 14:45:30
【问题描述】:

我是 unix 及其开发的新手。在我写的new.sh 脚本中

$USERNAME=user
$PASSWORD=sekrit

echo $USERNAME

并使用bash new.sh 运行new.sh

但我收到以下错误

new.sh: line 1: =user: command not found
new.sh: line 2: =sekrit: command not found

如何运行该命令并在终端中打印用户名变量?

【问题讨论】:

    标签: shell unix environment-variables


    【解决方案1】:

    USERNAME 是变量的名称。 $USERNAME 是替换(又名内容,又名值)。由于USERNAME 为空,因此您可以有效地尝试运行名为=user 的命令,这就是错误消息告诉您的内容。

    $USERNAME=... 中删除 $ 即可。

    【讨论】:

    • 詹斯谢谢它的工作。现在我知道如何在 unix 脚本中使用局部变量了
    【解决方案2】:

    正如Jens 在他的answer 中所说,问题在于对变量的赋值没有以$ 为前缀,所以:

    USERNAME=user
    PASSWORD=sekrit
    

    是写你想要的东西的方式。由于未设置 USERNAME,因此出现错误,因此扩展后,shell 将命令视为:

    =user
    =sekrit
    

    它在系统上找不到这样的命令(并不奇怪)。但是,请注意,如果您之前写过:

    USERNAME=archipelago
    PASSWORD=anchovy
    

    然后是行:

    $USERNAME=user
    $PASSWORD=sekrit
    

    相当于写作:

    archipelago=user
    anchovy=sekrit
    

    您可以通过不带参数运行set 来看到这一点;它会显示在 shell 中设置的所有变量的值。您可以搜索诸如 USERNAME 和 archipelago 之类的词来查看发生了什么。

    现在你已经学会了,忘记它。您需要使用它的次数非常有限(但它在您需要它的罕见——非常罕见——的场合很方便)。

    出于所有实际目的,不要在 shell 中变量赋值的左侧写 $

    【讨论】:

    • 不客气。您可能会注意到,即使在您观看电视节目的地方(例如,在英国,以及可能受英国而非美国影响的其他地区),使用“program”表示计算机程序也是惯例。
    猜你喜欢
    • 2023-03-07
    • 1970-01-01
    • 2017-01-28
    • 1970-01-01
    • 2019-03-04
    • 2011-06-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多