我正在尝试以下代码,以确保一次仅运行一次此bash:
this_bash=$(basename $0)
this_pid=${$}
is_running="$(pidof -x $this_bash -o $this_pid | wc -l )"
我发现它总是返回1,即使没有运行任何同名的bash。
为进一步检查,我尝试了此操作:
z=$(pidof -x $this_bash -o $this_pid)
echo "[$z]"
echo "[$(pidof -x $this_bash -o $this_pid)]"
echo "[$($z | wc -l )]"
echo "[$(pidof -x $this_bash -o $this_pid | wc -l )]"
方括号应确保没有隐藏的空格字符。
结果是:
[]
[]
[0]
[1]
我不明白为什么将pidof
存储为变量会返回预期的结果,而直接通过管道传递命令却不会。