2017-04-18 210 views
0

如何從查找管道while循環中退出腳本?在while循環中退出bash腳本

E.g.下面的退出只是退出管道子shell:

find some_directory -type d|while read dir_name; do 
    if [ -w "$dir_name" ]; then 
    exit 1 
    fi 
done 
+2

你不能在運行subshel​​l'完成<<找到some_directory -type d)',probs想要使用'而IFS =讀-r dir_name'來處理閃避文件名也是一樣。 – 123

+0

爲什麼這麼複雜? '找到some_directory -type d! -perm -u + w'會給你目錄 –

+0

@ the.Legend中的所有非可寫目錄,你如何獲得該查找的返回值? $?是0是否找到文件 – JDiMatteo

回答

2

您可以檢查管道的返回狀態:

if ! find some_directory -type d|while read dir_name; do 
    if [ -w "$dir_name" ]; then 
    exit 1 
    fi 
done; then exit 1; fi 

或者更簡單地說:

find some_directory -type d|while read dir_name; do 
     [ -w "$dir_name" ] && exit 1 
    done || exit 1