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

问题描述 投票:0回答:2

要在分离的屏幕中执行命令,我可以这样做(在创建屏幕后,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

我该怎么做?

bash gnu-screen
2个回答
1
投票

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

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

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

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

顺便说一句,MSG不是一个环境变量,它只是一个shell变量。它不会成为一个环境变量,除非你export它。


0
投票

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

MSG="hello"
screen -S myscreen -X stuff "echo $MSG
"
© www.soinside.com 2019 - 2024. All rights reserved.