构建多个屏幕的一个班轮

时间:2016-01-24 21:15:14

标签: bash sed

我有一个处理配置文件以启动渲染作业的脚本。我喜欢在屏幕上运行它们。

问题是,我无法命名屏幕,如果我需要查看状态,会导致它们混淆。

这有效,正在运行assets/job1_config.pyassets/job2_config.py

find assets -name 'job?_config.py' -exec screen -dm python3 procJobs.py {} \;

我尝试这样做,但它不起作用,因为它似乎返回目录名称,导致错误消息:“无法识别帐户'资产'。

find assets -name 'job?_config.py' -exec screen -dmS `sed 's/.*\(job[[:digit:]]\).*/\1/' <<< '{}'` \;

直接传递字符串时,sed正常工作。

sed 's/.*\(job[[:digit:]]\).*/\1/' <<< 'assets/job1_config.py'

有没有办法解决这个问题?

1 个答案:

答案 0 :(得分:1)

您无法以这种方式使用反引号,因为此命令将在启动find assets -name 'job?_config.py' -exec sh -c "screen -dmS `sed 's/.*\(job[[:digit:]]\).*/\1/' <<< '{}'`" \; 程序之前立即执行。如果您不想编写任何“帮助程序”脚本,可以尝试将整个命令嵌入到其他shell中:

function new-function{

    $greeting='hello world'
    new-item -path function:\ -name write-greeting -value {write-output $greeting} -Options AllScope
    write-greeting
}