Shell脚本中声明的变量未被识别反而被当作命令如何解决
错误根因
Bash 变量赋值语法有严格规则:= 赋值符号两侧绝对不能加空格。
你写的 directory1 = ~/path/to/directory/ 会被Shell解析为执行名为directory1的命令,传入=和对应路径作为参数,根本不会识别为变量赋值操作,因此触发directory1: command not found报错。两个目录变量实际为空值,后续执行diff命令时自然会因缺少操作数抛出参数错误。
修正后代码
去掉赋值语句等号两侧的空格即可,额外给变量引用包裹双引号,可避免路径包含空格、特殊字符时出现解析异常,完整可运行脚本如下:
#!/bin/bash directory1=~/path/to/directory/ directory2=~/path/to/directory2/ diff -r "$directory1" "$directory2" || echo "files are different"
内容的提问来源于stack exchange,提问作者user15985364
相关产品推荐
相关产品推荐

