Shell
解析文件時如何避免無用的cat?
我有一個包含目錄列表的文件。例如
/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
如果不編寫“幫助程序” ,這是無法做到的。