我需要在 shell 脚本中运行多个并行 screen (命令) session ,但似乎 GNU 并行现在正在使用 screen 参数。例如:
#!/bin/sh
parallel --gnu date ::: "-R" "-u"
工作正常,并行将两个参数传递给 date 命令。但是:
#!/bin/sh
parallel --gnu screen ::: "-d -m -S t1 bash -c 'echo hi 2>&1 | tee hi.txt'" "-d -m -S t2 bash -c 'echo bye 2>&1 | tee bye.txt'"
给我两个命令
Error: Unknown option d -m -S t1 bash -c 'echo hi 2>&1 | tee hi.txt'
Use: screen [-opts] [cmd [args]]
如果你仔细观察,“d”参数之前的 - 被删除了。也许我遗漏了任何明显的东西?
最佳答案
并行将字符串 "-d -m -S t1 bash -c 'echo hi 2>&1 | tee hi.txt'"
作为单个参数传递给 screen
.因此,参数不会被分割成单词,而且它看起来像是一个以 -d
开头的非常长的选项, screen 无法理解。
我认为你想做这样的事情,尽管我还没有测试过它或任何东西:
parallel --gnu "screen -d -m -S t1 bash -c 'echo {} 2>&1 | tee {}.txt'" ::: hi bye
关于bash - 如何使用 screen session 参数并行运行 GNU?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16996661/