将 Bash 变量设置为另一个导致操作数错误



我已经查看了与设置 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评估为算术表达式并失败(因为它是语法错误(。

可能的继续方法:

  1. 找出TOP被声明为整数1的位置和原因,并(如果不是有意的(将其删除。
  2. 使用不同的变量名称。
  3. 使用declare +i TOPTOP中删除整数属性。

1可能的罪魁祸首:gluster bash 完成脚本将TOP声明为整数并将其泄漏到全局环境中。有一个补丁可以解决问题(或者更确切地说是移动它;它只是将TOP重命名为GLUSTER_TOP(。

最新更新