我已经查看了与设置 bash 变量相关的堆栈溢出的几个答案,导致"语法错误:预期的操作数",并尝试了一些建议但没有成功。我是bash和Linux的新手,所以我希望有人可以提供帮助。
基本上我的同事希望我在终端中运行以下内容:
export TOPDIR=/home/user/folder/subfolder
export TOP=$TOPDIR
但是我在第二行收到错误:
bash: export: /home/user/folder/subfolder: syntax error: operand expected (error token is "/home/user/folder/subfolder")
我尝试将行更改为一些变体,例如
export TOP=${TOPDIR}
和
export TOP="${TOPDIR}"
没有成功。
任何关于我做错了什么的建议或帮助将不胜感激。
注意:我尝试直接将TOP
设置为文件位置,但没有成功。如果我echo $TOP
,我会得到0
回报。
echo $BASH_VERSION = 4.2.46(2) - release
问题是TOP
已被声明为整数(使用declare -i TOP
或等效项(。
从declare
文档中:
-i
变量将被视为整数;算术计算(参见 Shell 算术(在为变量赋值时执行。
这就是为什么
export TOP=$TOPDIR
尝试将/home/user/folder/subfolder
评估为算术表达式并失败(因为它是语法错误(。
可能的继续方法:
- 找出
TOP
被声明为整数1的位置和原因,并(如果不是有意的(将其删除。 - 使用不同的变量名称。
- 使用
declare +i TOP
从TOP
中删除整数属性。
1可能的罪魁祸首:gluster bash 完成脚本将TOP
声明为整数并将其泄漏到全局环境中。有一个补丁可以解决问题(或者更确切地说是移动它;它只是将TOP
重命名为GLUSTER_TOP
(。