2017-04-05 77 views
0

有沒有辦法將find(少數參數)的輸出保存到少數變量中?我需要做的是獲取find的輸出並將其作爲輸入提供給while並使用read。我不能使用-r -w或-x進行測試(這是一項學術練習)。Bash找到|而只讀 - 幾個變量

事情是這樣的:

find $1 -writable -printf "%f %p\n" , -readable -printf "%f %p\n" , -executable -printf "%f %p\n" | while read var1 var2 var3 
do 

    echo $var1 
    echo $var2 
    echo $var3 

done 

在VAR1我想有隻可寫文件,VAR2可讀,VAR3可執行文件。 而不是它全部在var1中。

+0

爲什麼不去用三種不同的'find'命令的簡單方法?爲什麼要合併三個數據流只是爲了將它們分開? – Jens

+0

我不能在練習中多用一個。無論如何,我得到了答案。 - 讀取佔用輸入的任何一行,並與之一起工作,因此,當查找打印具有新行字符的文件時,它每次只有一個變量。而不是使用讀取var1 var2 var3,之後我應該在while和read var2之後使用讀取var1,在循環中讀取var3。因此,如果輸入用新行打印,基本上使用多於​​一個讀取。 – zderzak678

回答

1

不明白你的鍛鍊,但也許像可可用作開始

while IFS= read -r -d '' file; do 
    [[ -w "$file" ]] && f_wrt+=("$file") 
    [[ -r "$file" ]] && f_rdr+=("$file") 
    [[ -x "$file" ]] && f_exe+=("$file") 
done < <(find . -maxdepth 1 -type f -print0) 

printf "writeable : %s\n" "${f_wrt[@]}" 
printf "readable : %s\n" "${f_rdr[@]}" 
printf "executable : %s\n" "${f_exe[@]}"