Shell脚本变量重新赋值时运行异常,提示命令未找到
解决Shell脚本中变量赋值的"command not found"错误
我一眼就看出问题所在了——你遇到的"command not found"报错,是因为变量操作的两个基础语法错误导致的,咱们来逐个修复:
错误点拆解
read $ldap的错误read命令的作用是读取用户输入并赋值给变量,后面应该直接跟变量名,不需要加$符号。$ldap是用来读取变量的值的,而不是定义变量,所以这行完全写错了。$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
相关产品推荐
相关产品推荐

