You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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
      EOF
    

    bash会判定Here Document未结束,会继续等待输入,若此时你输入hello并回车,bash就会尝试执行该命令。修复时要确保EOF单独占一行,且前面无任何空格或制表符。

  • 变量赋值语法错误
    检查变量赋值是否有多余空格,比如写成a= "hello"(等号后有空格),这会导致bash把"hello"当成命令执行(报错会更早出现)。正确的赋值写法是a="hello"(等号前后无空格)。

内容的提问来源于stack exchange,提问作者Divyacharan JVS

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 21:15:37