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

Shell脚本变量重新赋值时运行异常,提示命令未找到

解决Shell脚本中变量赋值的"command not found"错误

我一眼就看出问题所在了——你遇到的"command not found"报错,是因为变量操作的两个基础语法错误导致的,咱们来逐个修复:

错误点拆解

  1. read $ldap 的错误
    read命令的作用是读取用户输入并赋值给变量,后面应该直接跟变量名,不需要加$符号。$ldap是用来读取变量的值的,而不是定义变量,所以这行完全写错了。

  2. $directory = "/usr/local/home/google/${ldap}/Downl..." 的错误
    这一行有两个致命问题:

    • 变量赋值时,左边的变量名不能加$,$directory是取变量当前的值,而赋值需要直接写变量名directory;
    • 赋值符号=两边绝对不能有空格,Shell会把带空格的部分当成独立的命令和参数,这就是你看到"command not found"的直接原因。

修正后的代码片段

if [ "$directory" = "default" ]; then
    echo "Enter your ldap:"
    read ldap
    directory="/usr/local/home/google/${ldap}/Downloads"
fi

额外的健壮性建议

我还建议把[ ]里的$directory用双引号包起来(也就是"$directory"),这样如果directory变量为空,脚本也不会出现语法错误,能提升脚本的容错性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 07:46:49