0

我正在尝试使用外部配置文件设置脚本,但没有运气让它工作:

我有一个配置文件,我想在其中声明我的变量:

#!/bin/bash
screenname=template

还有我的脚本,我在其中点包这个文件。

#!/bin/bash
. config.sh
echo $screenname

screen -S $screenname -X stuff "Test\015"
screen -S template -X stuff "Test\015"

输出:

template
No screen session found.

有一个名为 >template< 的屏幕,您可以看到 $screenname 的值是 >template< 但第一个屏幕命令仍然返回 No screen session found...

希望有人可以帮助我解决这个愚蠢的事情..谢谢

4

1 回答 1

0

将 aset -x放在执行“dotsourcing”的脚本顶部(在 shebang 行下方#!/bin/bash):

#!/bin/bash
set -x
. config.sh
echo $screenname
:
rest of script

这将在执行之前输出解释的每一行,并且应该帮助您尝试找出它不工作的原因。您可能还想添加:

echo "[$screenname]"
echo "${#screenname]"

获得分隔版本和长度。

问题的一些可能性:

  • 可能需要导出screenname变量(尽管在这种情况下我不这么认为,因为bash它本身应该解释环境变量)。
  • 变量中的一些隐藏字符。

不过,我再次强调,您应该执行建议的步骤来缩小或定位问题,而不是依靠猜测。

于 2013-04-15T07:51:13.997 回答