gpt4 book ai didi

linux - 对脚本文件参数中给出的目录中的所有文件运行 cat 命令,并使用作为第二个参数给出的名称输出

转载 作者:太空宇宙 更新时间:2023-11-04 09:39:24 26 4
gpt4 key购买 nike

我运行以下代码以在作为 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

最佳答案

我认为您的脚本至少有 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

关于linux - 对脚本文件参数中给出的目录中的所有文件运行 cat 命令,并使用作为第二个参数给出的名称输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23016491/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com