在bash脚本中点源配置文件时出现“空”变量

时间:2013-04-15 07:46:57

标签: bash sh

我试图设置一个带有外部配置文件的脚本,但没有运气开始工作:

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

#!/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<但第一个屏幕命令仍然返回没有找到屏幕会话...

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

1 个答案:

答案 0 :(得分:0)

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

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

这将在执行它之前输出每行,因为它会帮助你找出它无法正常工作的原因。您可能还想添加:

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

获取分隔版本和长度。

问题的一些可能性:

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

虽然我再次强调你应该执行建议的步骤来缩小或找出问题,而不是依赖于猜测。