脚本bash不尊重等待命令



我正在尝试编写一个脚本,该脚本在我的linux计算机上执行操作,但不尊重等待命令。

这是我的代码,不工作

cat file.txt | while read line || [[ -n $line ]]; do
do
QUEST="$(./fi $line | grep -oE " fi " &> A.txt; echo $? >"$dir")" & proc=$!
wait "$proc"
read ret <"$dir"
if [[ "$QUEST" != "" ]];then echo "$line" &>> A.txt; fi; unset QUEST;
done &> /dev/null & wait

它必须一次完成一个任务并保存输出(可能存在也可能不存在(。

当您在后台运行命令时,它会在子shell中运行。任何变量赋值在原始shell中都不可见,因此对QUEST的赋值不起作用。

您不需要在后台执行此操作,因为您正在立即等待命令完成。正常运行即可。

while read line || [[ -n $line ]]; do
do
QUEST="$(./fi $line | grep -oE " fi " &> A.txt)"
ret=$?
if [[ "$QUEST" != "" ]]
then  echo "$line" &>> A.txt
fi
done &> /dev/null < file.txt
unset QUEST

也不需要将$?写入$dir。命令替换中变量赋值的退出状态是命令的退出状态。

相关内容

  • 没有找到相关文章

最新更新