从另一个文件中提取变量时,进程被终止。

时间:2017-04-04 17:33:57

标签: linux bash shell tmux

我有一个启动TMUX进程的file.sh:

if tmux new -d -c ${INSTALL_DIR} -s ${TMUX_SESSION} bin/${SERVER} --port ${PORT} --galaxy-name ${GALAXY} --max-players ${MAX_PLAYERS}  ${PARAMS} 2> /dev/null
    then

目前,所有这些变量都可以在文件顶部找到:

MAX_PLAYERS=20
GALAXY=GalaxyName
#etc

我试图将一些变量推送到另一个文件,以便当我将更新推送到file.sh时我不会覆盖客户端自定义变量 问题是当尝试从file-config.sh中引入这些变量时,tmux启动的进程立即被终止

尝试将这些变量拉入时:

source ./file-config.sh

在这里我可以致电echo ${GALAXYNAME}并且它有效。 但是,在运行上面列出的TMUX命令后,我立即运行:

如果pidof $ {SERVER}>的/ dev / null的;

总是失败,这个过程会马上被杀死。 我也尝试过如下使用catgrep

MAX_PLAYERS=$(grep MAX_PLAYERS= ./file-config.sh | sed -e 's/#.*//' -e 's/.*=//')
GALAXY=$(grep GALAXY= ./file-config.sh | sed -e 's/#.*//' -e 's/.*=//')

其结果与以前相同。我可以回应变量,但TMUX进程被终止。

我想说清楚,如果变量位于file.sh的顶部并且我没有尝试从另一个文件中引入它们,则脚本按预期工作100%。只有当我试图从另一个来源引入变量时,它才会自行终止。

修改

关于使用bashes调试模式的注释我发现在两种情况下,变量在它们的末尾都有\r,导致它们破坏了TMUX命令。

我可以通过向每个变量添加sed -e 's/\r//g'来删除它,但我不确定从源变量中删除\r的最佳方法

source filename
variable=$($variable | sed -e 's/\r//g)

有更好的选择吗?

0 个答案:

没有答案