我想编写一个循环来生成 22 个 R 脚本,其中的内容在 echo 中生成。这个循环到底是哪里出了问题,怎么也拿不到对应内容的22个文件呢?
我测试了echo "i want that file" > file.r
它工作正常。然后我测试了,它被视为两个独立的过程。首先它回显文本,然后生成 22 个空文件。
for i in `seq 1 22`; do
echo "a <- read.delim('file${i}.txt', header=T, check.names=FALSE);
library('splitstackshape');
loc1 <- cSplit(a, 'V1', ':');
rm(a);
out <- cbind.data.frame(loc1$V1_1, loc1$V1_2);
write.table(out, 'out_file${i}.txt', sep='\t', row.names=F, quote=F)";
> build_file${i}.r; done
然后我试了这个..还是不行..
for i in `seq 1 22`; do
echo "a <- read.delim("file${i}.txt", header=T, check.names=FALSE);
library("splitstackshape");
loc1 <- cSplit(a, "V1", ":");
rm(a);
out <- cbind.data.frame(loc1$V1_1, loc1$V1_2);
write.table(out, "out_file${i}.txt", sep="\t", row.names=F, quote=F)";
cat > loc_chr${i}.r; done
不确定我是否完全遵循您脚本中的引号以及您希望
cat
命令执行的操作,因为它从非重定向标准输入读取,即可能是您的键盘。像这样的东西怎么样您的第一个代码示例不起作用,因为它有
> build_file${i}.r
自己的行,它没有将任何内容重定向到 20 个文件中。附加> build_file${i}.r
到您的末尾echo
。您的第二个代码示例由于
cat
位于底部而无法正常工作。您不提供要cat
连接的内容,因此它正在等待输入。您应该删除该
cat
行,并附> loc_chr${i}.r
加到您的echo
.