我有3个目录:/ home / user / control4,/ home / user / control8,/ home / user / control16
我编写了一个脚本文件,其中有两个循环,第一个是运行模拟,生成3个名为cc1.txt cc2.txt和cc3.txt的文件,第二个循环用于目录名称
我喜欢分别将cc1.txt,cc2.txt,cc3.txt指向/ home / user / control4,/ home / user / control8,/ home / user / control16。在BASH中执行此操作的确切语法是什么?
感谢您的帮助。
我的脚本文件看起来像这样
#!/user/bin/bash
for j in $(4 8 16 ) # loop for directories
do
for i in $(seq 1 3) # loop for simulations
do
.... produce cc1.txt cc2.txt cc3.txt
done
如何将三个文件输出到相应的目录?像/home/user/control$j/cc$i.txt?
完成
答案 0 :(得分:1)
cat cc$i.txt > /home/user/control$j/cc$i.txt
答案 1 :(得分:1)
for j in /home/user/control{4,8,16}
do
for i in cc{1,2,3}.txt
do
produce "$j/$i"
done
done
这将产生九个文件。如果你希望每个目录有一个文件,总共有三个文件,那么一些数学可能就可以了。
for i in {1..3}
do
produce "/home/user/control$((2*2**i))/cc$i.txt"
done
答案 2 :(得分:0)
如果我正确地阅读你的脚本,你最终会得到9个文件:cc1到3各自位于目录control4,8和16.但是,你的文字描述意味着你只需要3个文件:control4 / cc1.txt,control8 / cc2.txt和control16 / cc3.txt。
如果您确实有一个名为produce
的命令将输出文件作为参数,并且您只需要3个文件,我只需指定三个输出目录&手动编写文件,不用担心循环。
如果您确实有一个名为produce
的命令,它将输出文件作为参数,并且您想要总共9个文件,那么是,控制$ j / cc $ i.txt将会这样做。
如果您没有名为produce
的命令将输出文件作为参数(即代码示例中的那行是伪代码),并且生成数据的命令只会将这些文件转储出去你指定任何东西,那么我认为你完成后必须mv cc1.txt control4 ; mv cc2.txt control8 ; mv cc3.txt control16
。