簡體   English   中英

在Linux中使用$符號訪問每一行

[英]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是您要尋找的:

cat to_be_removed.txt | xargs rm -f

但是,如果使用文件名,請注意文件名中的空格。 請查看xargs手冊頁以獲取更多信息。

您可能正在尋找xargs命令。

它需要控制參數,外加一個命令以及該命令的可選參數。 然后,它讀取其標准輸入(通常在空白處分割),然后安排使用給定的參數重復執行該命令,並從標准輸入中讀取盡可能多的“文件名”,以使其適合命令行。

 rm -f $(<to_be_removed.txt)

這是rm因為rm可以將多個文件作為輸入。 它也使效率更高,因為您只需調用rm一次,而無需創建到catxargs的管道。

另外,您可以通過使用進程替換來避免使用子shell,而不是在while循環中使用管道:

while read line; do
  some operation on $a;
done < <(command something)

你避免子shell中獲得額外的好處是,你在循環中改變變量保持環以外的更改后的值也是如此。 使用管道表單時並非如此,這是常見的陷阱。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM