Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
避免在继承输入源的bash中嵌套循环?_Bash - Fatal编程技术网

避免在继承输入源的bash中嵌套循环?

避免在继承输入源的bash中嵌套循环?,bash,Bash,我有以下代码: while read LINE; do if [[ "$LINE" == "ask" ]]; then read USR_RESPONSE fi done < a.txt 读行时;做 如果[[“$LINE”==“ask”];然后 读取USR_响应 fi 完成

我有以下代码:

while read LINE; do
    if [[ "$LINE" == "ask" ]]; then
        read USR_RESPONSE
    fi
done < a.txt
读行时
;做
如果[[“$LINE”==“ask”];然后
读取USR_响应
fi
完成
但无法理解如何从stdin进行内部读取。我尝试了以下几种组合:

while read LINE; do
    if [[ "$LINE" == "ask" ]]; then
        read USR_RESPONSE (<0) (<&0) 
    fi
done (< a.txt) (3<a.txt)
读行时
;做
如果[[“$LINE”==“ask”];然后
阅读USR_响应(尝试以下操作:

while read -u 10 LINE; do
    if [[ "$LINE" == "ask" ]]; then
        read USR_RESPONSE
    fi
done 10< a.txt
读取时-u10行;执行
如果[[“$LINE”==“ask”];则
读取USR_响应
fi
完成10次
试试这个:

while read -u 10 LINE; do
    if [[ "$LINE" == "ask" ]]; then
        read USR_RESPONSE
    fi
done 10< a.txt
读取时-u10行;执行
如果[[“$LINE”==“ask”];则
读取USR_响应
fi
完成10次
我发现
read-u
是不可移植的,所以我倾向于推荐例如
read LINE@GordonDavisson。但由于这是一个
bash
标记的问题,我想把它作为答案是可以的,即使不是可移植的。无论如何,你的选择是一个好的选择。我发现
read-u
Isn不可移植,因此我倾向于推荐,例如,
read LINE@GordonDavisson,确实如此。但由于这是一个
bash
标记的问题,我想把它作为答案是可以的,即使不是可移植的。无论如何,你的选择是一个好的选择。