Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unix 在bash循环中处理cat和head_Unix_Head_Cat - Fatal编程技术网

Unix 在bash循环中处理cat和head

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

我试图通过在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 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

片刻,这个问题看起来像是虐待动物:Ptry
cat-$i
由于初始化后的变量需要$,所以这个问题看起来像是动物虐待:Ptry
cat-$i
由于初始化后变量需要$,除非变量中有空格,否则不需要引号。。。但是,这确实是一个很好的实践。除非变量中有空格,否则不需要引号。。。但是,这确实是一个很好的做法。