在执行时查看shell命令,包括变量

时间:2016-04-21 19:01:09

标签: bash shell sh

我能做到

bash -x mysellh.sh

查看正在执行的命令,但我没有看到变量被其值替换。例如,如果我有shell脚本:

screen -d -m sh -c 'RAILS_ENV="$R_ENV" bundle exec rake sunspot:solr:reindex[500] > "$PROJECT_DIR"/solr/indexing_out.txt'

我会看到:

+ screen -d -m sh -c 'RAILS_ENV="$R_ENV" bundle exec rake sunspot:solr:reindex[500] > "$PROJECT_DIR"/solr/indexing_out.txt'

即使我之前已经宣布过:

R_ENV=test

可以选择做我想要的吗?

1 个答案:

答案 0 :(得分:3)

在这种情况下,它正在按照你的要求进行操作:$R_ENV所在的命令行“word”是你用单引号括起来的,它会阻止扩展。 -x输出显示非扩展。如果您希望扩展这些变量,请将第一个“单词”括在双引号中并在内容中使用单引号,如下所示:

screen -d -m sh -c "RAILS_ENV='$R_ENV' bundle exec rake sunspot:solr:reindex[500] > '$PROJECT_DIR'/solr/indexing_out.txt"

然后单引号围绕扩展文本,双引号允许变量扩展。