Linux 设置变量
Linux setting variables
我是 运行 Linus 的 shell 脚本,我有一个意外的行为。
bash-4.2$ echo $TOOLBOX_ROOT
/opt/lsas/lsas_datenbank/tools/3rd_Party/ettools
bash-4.2$ export REALSCRIPT="$TOOLBOX_ROOT/sh/dbSchemaSetup.sh"
bash-4.2$ echo $REALSCRIPT
/sh/dbSchemaSetup.shbank/tools/3rd_Party/ettools
看起来它并没有连接两个字符串,而是在开头附加数据。
有什么建议吗?
此致
当设置TOOLBOX_ROOT的值时,它的末尾有一个回车return($'\r'
)。结果,REALSCRIPT 变量的值现在是:
/opt/lsas/lsas_datenbank/tools/3rd_Party/ettools\r/sh/dbSchemaSetup.sh
...而当你echo $REALSCRIPT
时,\r
被echo
解释为回车return,意思是:将光标移动到线。结果,视觉输出为“/opt/lsas/lsas_datenbank/tools/3rd_Party/ettools”,但在开头被“/sh/dbSchemaSetup.sh”覆盖。
最好的选择是防止 \r
包含在对 TOOLBOX_ROOT 的赋值中。
second-best 选项是在分配后立即将其删除,例如:
TOOLBOX_ROOT=${TOOLBOX_ROOT/%$'\r'/}
... 这将从该变量的末尾删除任何回车 return。
我是 运行 Linus 的 shell 脚本,我有一个意外的行为。
bash-4.2$ echo $TOOLBOX_ROOT
/opt/lsas/lsas_datenbank/tools/3rd_Party/ettools
bash-4.2$ export REALSCRIPT="$TOOLBOX_ROOT/sh/dbSchemaSetup.sh"
bash-4.2$ echo $REALSCRIPT
/sh/dbSchemaSetup.shbank/tools/3rd_Party/ettools
看起来它并没有连接两个字符串,而是在开头附加数据。
有什么建议吗?
此致
当设置TOOLBOX_ROOT的值时,它的末尾有一个回车return($'\r'
)。结果,REALSCRIPT 变量的值现在是:
/opt/lsas/lsas_datenbank/tools/3rd_Party/ettools\r/sh/dbSchemaSetup.sh
...而当你echo $REALSCRIPT
时,\r
被echo
解释为回车return,意思是:将光标移动到线。结果,视觉输出为“/opt/lsas/lsas_datenbank/tools/3rd_Party/ettools”,但在开头被“/sh/dbSchemaSetup.sh”覆盖。
最好的选择是防止 \r
包含在对 TOOLBOX_ROOT 的赋值中。
second-best 选项是在分配后立即将其删除,例如:
TOOLBOX_ROOT=${TOOLBOX_ROOT/%$'\r'/}
... 这将从该变量的末尾删除任何回车 return。