Korn shell 的 for 迴圈和 while 迴圈哪個比較好

Korn shell 的 for 迴圈和 while 迴圈哪個比較好

我有一個檔案 file_list.txt,其中包含要處理的檔案名稱清單。對於 file_list.txt 中存在的所有文件,我必須刪除尾隨空格和額外的換行符。我怎樣才能做到這一點。使用 while 迴圈會更好還是使用 for 迴圈更好?

答案1

如果是關於編輯的內容file_list.txt你會使用文字編輯工具,而不是 shell 循環, 喜歡:

sed 's/[[:space:]]*$//; # remove trailing whitespace
     /./!d; # remove empty lines' < file_list.txt > new_file_list.txt

或進行就地編輯:

perl -nli.back -e 's/\s+$//;print if /./' file_list.txt

.back如果不需要原件的備份副本,請刪除)。

如果file_list.txt包含文件列表,並且您要編輯這些文件的內容,那麼循環也不是理想的選擇,除非您確實想為每個文件執行編輯命令。

如果 的內容file_list.txt與輸入格式相容xargs,即檔案名稱以空格(包括換行符)分隔,且雙引號、單引號或反斜線可以轉義空格和彼此(允許任何字元),那麼您可以這樣做:

xargs < file_list.txt perl -nli.back -e 's/\s+$//;print if /./' --

相關內容