Unix 在bash循环中处理cat和head
我试图通过在bash命令行中使用for循环,将一个文件中的两行文本添加到一组其他文件的开头 我在命令行中尝试了以下操作:Unix 在bash循环中处理cat和head,unix,head,cat,Unix,Head,Cat,我试图通过在bash命令行中使用for循环,将一个文件中的两行文本添加到一组其他文件的开头 我在命令行中尝试了以下操作: $for i in *.txt; do head -2 ../../041_R_def_c.txt > X; cat i >> X; \mv X i; done 但它给了我一个错误: cat: i: No such file or directory 我还尝试将一行移到文件的开头: $for i in *.txt; do echo "#c wavelen
$for i in *.txt; do head -2 ../../041_R_def_c.txt > X; cat i >> X; \mv X i; done
但它给了我一个错误:
cat: i: No such file or directory
我还尝试将一行移到文件的开头:
$for i in *.txt; do echo "#c wavelength d %4.0f angstrom"|cat - i > /tmp/out && mv /tmp/out i; done
cat: i: No such file or directory
cat: i: No such file or directory
cat: i: No such file or directory
我原以为我会携带.txt文件的名称,但我不认为我是这样的。如何让我携带文件名/扮演文件的角色?在您的循环中,
I
是一个变量,您需要使用$
访问变量的内容,因此它应该是cat$I>>X
。否则,它认为您想要cat
名为i
的文件,该文件不存在$i
提供存储在变量i
中的名称
您将遇到与
mv
相同的问题。。。您需要在循环中使用\mv X$i
,i
是一个变量,您需要使用$
访问变量的内容,因此它应该是cat$i>>X
。否则,它认为您想要cat
名为i
的文件,该文件不存在$i
提供存储在变量i
中的名称
您将遇到与
mv
相同的问题。。。您将需要\mv X$i
片刻,这个问题看起来像是虐待动物:Ptrycat-$i
由于初始化后的变量需要$,所以这个问题看起来像是动物虐待:Ptrycat-$i
由于初始化后变量需要$,除非变量中有空格,否则不需要引号。。。但是,这确实是一个很好的实践。除非变量中有空格,否则不需要引号。。。但是,这确实是一个很好的做法。