Shell脚本中使用变量报错:bash: hello command not found
问题分析与解决
正常情况下你提供的这段Shell代码是可以正确运行的,会将Inside script hello写入abc.txt文件,不会出现bash: hello command not found的错误。出现该错误说明bash尝试执行了hello这个不存在的命令,大概率是你的实际代码写法和贴出的不一致,以下是常见原因及修复方案:
误将变量作为独立命令执行
如果你的代码实际是这样的:a="hello" cat << EOF > abc.txt Inside script EOF $a执行完
cat命令后,bash会将$a展开为hello并尝试执行它,从而触发错误。只需删除最后一行的$a即可修复。Here Document中错误使用命令替换
若你在Here Document里用反引号包裹了$a:a="hello" cat << EOF > abc.txt Inside script `$a` EOF反引号会触发命令替换,bash会先执行
$a对应的hello命令,进而报错。修复方式是去掉反引号,直接使用$a。Here Document结束符格式错误
如果结束符EOF前有空格或制表符(如下方代码):a="hello" cat << EOF > abc.txt Inside script $a EOFbash会判定Here Document未结束,会继续等待输入,若此时你输入
hello并回车,bash就会尝试执行该命令。修复时要确保EOF单独占一行,且前面无任何空格或制表符。变量赋值语法错误
检查变量赋值是否有多余空格,比如写成a= "hello"(等号后有空格),这会导致bash把"hello"当成命令执行(报错会更早出现)。正确的赋值写法是a="hello"(等号前后无空格)。
内容的提问来源于stack exchange,提问作者Divyacharan JVS
相关产品推荐
相关产品推荐

