在传递给屏幕的命令中使用环境变量

时间:2014-07-30 08:12:34

标签: bash gnu-screen

要在分离屏幕中执行命令,我可以执行此操作(创建屏幕后screen -dmS myscreen bash):

screen -S myscreen -X stuff $'echo hello\n'

然而,对于环境变量,此语法与$混淆:

MSG="hello"
screen -S myscreen -X stuff $'echo $MSG\n' #doesn't work

我该怎么做?

2 个答案:

答案 0 :(得分:1)

对需要展开变量的部分使用双引号字符串,对包含转义序列的部分使用带引号的字符串,并将它们连接起来。

screen -S myscreen -X stuff "echo $MSG"$'\n'

另一种选择是将换行符分配给变量:

NL=$'\n'
screen -S myscreen -X stuff "echo $MSG$NL"

BTW,MSG不是环境变量,它只是一个shell变量。除非export,否则它不会成为环境变量。

答案 1 :(得分:0)

另一种选择,虽然它看起来不是一个干净的例子......

MSG="hello"
screen -S myscreen -X stuff "echo $MSG
"