如何编写一个 shell 脚本来在不同的屏幕会话中运行多个命令?

Ves*_*nog 6 gnu-screen zsh shell-script

我的目标是编写一个zsh脚本来创建多个screen会话并在每个会话上运行单独的命令。我还想在脚本的开头检查是否有任何屏幕正在运行作业并终止所有闲置的屏幕。此外,如果可能的话,我希望有一种方法来记录单个屏幕的标准输出并获取他们的 ID 号。到目前为止,我已经尝试了以下方法:

### Script for running everything in screens ###
killall -15 screen ## We make sure that no screens are running for now
#bkg_array = ("TopJets" "BosonJets" "DiBoson" "TTbar")

screen -dmS "MYSCREEN"
screen -S "MYSCREEN" -p 0 -X stuff 'echo "The array has of elements."\n'
Run Code Online (Sandbox Code Playgroud)

但是,我似乎无法发送按键来按下Enter; 我怎样才能达到这种效果?此外,如果没有该-p选项,则命令不会发送到屏幕。按下后Ctrl+V+Enter,字符^M被粘贴到屏幕上,并在屏幕会话中按下回车键,但我不知道为什么会这样。

感谢您的帮助,请随时指出任何歧义。

dha*_*hag 1

我发现虽然 screen 不解释诸如 之类的命名字符\n,但它确实会处理八进制转义。因此stuff 'echo "The array has of elements."\n',您可以使用:

stuff 'echo "The array has of elements."'\012
Run Code Online (Sandbox Code Playgroud)