我正在尝试编写一个脚本,该脚本在我的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
。命令替换中变量赋值的退出状态是命令的退出状态。