[英]Accessing each line using a $ sign in linux
每當執行輸出多行的linux命令時,我都希望在輸出的每一行上執行一些操作。 通常我會
command something | while read a
do
some operation on $a;
done
這很好。 但是我的問題是,是否有一些方法可以通過預定義的符號訪問每一行(不知道如何調用它)///像$這樣? ..或.. $! ..或.. $ _
有可能做
cat to_be_removed.txt | rm -f $LINE
bash中是否有預定義的$ LINE ..或前一個是最短的方法。 即。
cat to_be_removed.txt | while read line; do rm -f $line; done;
您可能正在尋找xargs
命令。
它需要控制參數,外加一個命令以及該命令的可選參數。 然后,它讀取其標准輸入(通常在空白處分割),然后安排使用給定的參數重復執行該命令,並從標准輸入中讀取盡可能多的“文件名”,以使其適合命令行。
rm -f $(<to_be_removed.txt)
這是rm
因為rm
可以將多個文件作為輸入。 它也使效率更高,因為您只需調用rm
一次,而無需創建到cat
或xargs
的管道。
另外,您可以通過使用進程替換來避免使用子shell,而不是在while循環中使用管道:
while read line; do
some operation on $a;
done < <(command something)
你避免子shell中獲得額外的好處是,你在循環中改變變量保持環以外的更改后的值也是如此。 使用管道表單時並非如此,這是常見的陷阱。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.