gpt4 book ai didi

bash - 在 Bash 变量赋值中找不到命令错误

转载 作者:行者123 更新时间:2023-12-04 19:25:22 26 4
gpt4 key购买 nike

我有这个名为 test.sh 的脚本:

#!/bin/bash
STR = "Hello World"
echo $STR

当我运行 sh test.sh我明白了:
test.sh: line 2: STR: command not found

我究竟做错了什么?我在网上查看了非常基本的/初学者 bash 脚本教程,这就是他们所说的声明变量的方式......所以我不确定我做错了什么。

我在 Ubuntu Server 9.10 上。是的,bash 位于 /bin/bash .

最佳答案

= 周围不能有空格符号。
当你写:

STR = "foo"
bash 尝试运行名为 STR 的命令带有 2 个参数(字符串 =foo )
当你写:
STR =foo
bash 尝试运行名为 STR 的命令带 1 个参数(字符串 =foo )
当你写:
STR= foo
bash 尝试运行命令 foo STR 在其环境中设置为空字符串。
我不确定这是否有助于澄清或仅仅是混淆,但请注意:
  • 第一个命令完全等同于:STR "=" "foo" ,
  • 第二个与 STR "=foo" 相同,
  • 最后一个等价于STR="" foo .

  • sh language spec, section 2.9.1 的相关部分状态:

    A "simple command" is a sequence of optional variable assignments and redirections, in any sequence, optionally followed by words and redirections, terminated by a control operator.


    在这种情况下, word是 bash 将要运行的命令。任何包含 = 的字符串(在字符串开头以外的任何位置)这不是重定向并且其中 = 之前的字符串部分是一个有效的变量名是一个变量赋值,而任何不是重定向或变量赋值的字符串都是一个命令。在 STR = "foo" , STR不是变量赋值。

    关于bash - 在 Bash 变量赋值中找不到命令错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71680968/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com