我能做到
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
可以选择做我想要的吗?
答案 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"
然后单引号围绕扩展文本,双引号允许变量扩展。