Cat
如何將內容回顯到cat生成的一系列新文件中
我想編寫一個循環來生成 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
命令執行的操作,因為它從非重定向的標準輸入(即可能是您的鍵盤)讀取。像這樣的東西怎麼樣for i in `seq 1 22` do cat <<- EOF > loc_chr${i}.r "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)" EOF done