[英]run cat command for all the files in the directory given in argument of the script file and out put with the name given as second argument
我運行以下代碼來連接目錄中的文件,該目錄作為bash中腳本文件的參數給出
for i in $*
do
cat $* > /home/christy/Documents/filetest/catted.txt
done
產生錯誤
cat: /home/christy/Documents/filetest/catted.txt: input file is output file
你不能cat
文件回到自身上。 那就是“輸入文件就是輸出文件”的意思。 因為catted.txt顯示在您的cat參數列表中,所以它將嘗試使其適應自身。 因此,將catted.txt移動到源目錄以外的其他位置。
我認為您的腳本至少有4處錯誤。
首先,您的循環將i
的值連續設置為每個文件的名稱,因此您希望在循環中實際使用i
,如下所示:
for i in $*
cat "$i" ....somewhere
done
其次,如果您使用>
重定向,則每個文件都將恰好位於前一個文件的頂部 ,因此您應該真正使用>>
重定向將當前文件追加到前一個文件的末尾,如下所示
for i in $*
do
cat "$i" >> ...somewhere
done
第三,我認為您應該使用雙引號"$@"
來獲取所有命令行參數,而不是普通的$*
for i in "$@"
...
第四,您可以使用以下更簡單的命令達到我認為想要的確切效果:
cat "$@" > /home/christy/Documents/filetest/catted.txt
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.