Shell

解析文件時如何避免無用的cat?

  • February 22, 2022

我有一個包含目錄列表的文件。例如

/foo/bar/dir1
/foo/bar/dir2
/foo/bar/dir3

我想創建所有這些目錄。這是我所做的:

for dir in $(cat myfile); do mkdir $dir; done

在避免“無用使用貓”的同時這樣做的正確方法是什麼?

理想情況下,答案將集中在 Ksh88 上,但我也對其他 shell 感興趣

AProgrammer 的使用建議xargs通常是最好的,但另一種選擇是使用重定向進入while循環,它允許執行其他命令並設置變數:

while read -r dir; do mkdir $dir; done < myfile

一個更複雜的結構的例子是:

now=`date +%Y%m%d.%H%M%S`
while read -r dir; do
   newdistfile="/tmp/dist-`echo $dir | tr / _`.tgz"
   mv $dir ~/backups/$dir.$now &&
       mkdir $dir &&
       tar xzfC $newdistfile $dir
done < myfile

xargs如果不編寫“幫助程序” ,這是無法做到的。

引用自:https://unix.stackexchange.com/questions/27162