我有一个处理配置文件以启动渲染作业的脚本。我喜欢在屏幕上运行它们。
问题是,我无法命名屏幕,如果我需要查看状态,会导致它们混淆。
这有效,正在运行assets/job1_config.py
,assets/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'
有没有办法解决这个问题?
答案 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
}