要在分离的屏幕中执行命令,我可以这样做(在创建屏幕后,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
我该怎么做?
对需要扩展变量的部分使用双引号字符串,对包含转义序列的部分使用带引号的字符串,并将它们连接起来。
screen -S myscreen -X stuff "echo $MSG"$'\n'
另一种选择是将换行符分配给变量:
NL=$'\n'
screen -S myscreen -X stuff "echo $MSG$NL"
顺便说一句,MSG
不是一个环境变量,它只是一个shell变量。它不会成为一个环境变量,除非你export
它。
一种选择,虽然它看起来不是一个干净的例子......
MSG="hello"
screen -S myscreen -X stuff "echo $MSG
"