Bash 脚本:抑制作业创建消息
Bash script: Suppress job creation message
我有一个 bash 函数可以并行运行几个子进程,如下所示:
#!/bin/bash
function check() {
set +m
for f in foo bar ; do
(
if [ -f $f ] ; then ls -la $f >> all; fi
) &
done
wait
}
在 sourcing 和 运行 这个 (. scriptfile; check
) 上,+m
已经成功地抑制了作业完成输出,但它仍然在创建时显示进程 ID,例如:
[1] 123
[2] 456
如何抑制这些 ID 行?
或者更好的是,尝试使用 gnu 并行 运行 所有这些进程并行。
类似于:
parallel -P 5 'if [ -f {} ] ; then ls -la {} >> all' ::: foo bar
Shell 在 stderr 上写入后台进程 ID,因此一种方法是在脚本中抑制 stderr:
#!/bin/bash
function check() {
set +m
for f in foo bar ; do
{
if [ -f $f ] ; then ls -la $f >> all; fi
} &
done 2>/dev/null
wait
}
我有一个 bash 函数可以并行运行几个子进程,如下所示:
#!/bin/bash
function check() {
set +m
for f in foo bar ; do
(
if [ -f $f ] ; then ls -la $f >> all; fi
) &
done
wait
}
在 sourcing 和 运行 这个 (. scriptfile; check
) 上,+m
已经成功地抑制了作业完成输出,但它仍然在创建时显示进程 ID,例如:
[1] 123
[2] 456
如何抑制这些 ID 行?
或者更好的是,尝试使用 gnu 并行 运行 所有这些进程并行。
类似于:
parallel -P 5 'if [ -f {} ] ; then ls -la {} >> all' ::: foo bar
Shell 在 stderr 上写入后台进程 ID,因此一种方法是在脚本中抑制 stderr:
#!/bin/bash
function check() {
set +m
for f in foo bar ; do
{
if [ -f $f ] ; then ls -la $f >> all; fi
} &
done 2>/dev/null
wait
}