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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.02 01:30:27