私は、多数の他のスクリプトを生成する目的でスクリプトを書いています。私はforループを使用しています。これは、各スクリプトに対して必要なコードのテキストをエコーし、.shファイルに出力します。ここで私はそれを書いた方法です:.shファイルにエコーする
#!/bin/bash
for i in {1..30} ; do
echo
"#!/bin/bash
#$ -N DT_STAR_$i
#$ -l mem_free=200G
#$ -pe openmp 4
#$ -q bio,abio,pub8i
module load STAR/2.5.2a
STAR --genomeDir /dfs1/bio/dtatarak/indexes/STAR_Index --readFilesIn
DT_$i.read1.fastq DT_$i.read2.fastq --runThreadN 4 --outFileNamePrefix
/David_data1/DT_$i" > DT_STAR_map_$i.sh
done
は基本的に私はそれが何をしたいのか、「」内のコードのすべての行を取るとDT_1、DT_2にDT_iを変える新しい.SHファイルにするたびにそれらを置くですDT_3などを使用しています。端末でこのスクリプトを実行すると、すべての.shファイルを作成しますが、何も入れません。引用符の内容を "No such file or directory"というメッセージとともに私の画面に表示します。私は何が間違っているのか分かりません。私がしようとしていることを達成するためのよりよい方法はありますか?
ありがとうございます!
STARコマンド自体は、自分のコードの1行として書かれています。私はこのウェブサイトのフォーマットに精通していないので、それが私のポストでそのように終わったのです。エコーコマンドが新しい行で中断されたことはわかりませんでした。ありがとう、私はそれを試してみましょう! –
それはすごくうまくいった!ありがとう、私はエコー構文のその側面を認識していませんでした。 –
あなたは、コマンドの最後が行末にあることに気づいていませんでしたか? – Barmar