我有一個 txt 檔案,其中包含一系列要傳遞給腳本的引數。每個引數都在單獨的行上。我想制作一個可以連接這些引數的 BASH 腳本(每個引數之間有空格),然后使用這些連接的引數執行腳本。這是檔案(d.txt)內容:
-格式化fastq
-在資料/test_data.1.fq.gz
-in2 資料/test_data.2.fq.gz
-參考 hg19
-結盟
-variantcalling
-注解
-iobio
-out outdir/
-床
我嘗試按以下方式進行操作,但它給了我一個錯誤。而不是連接 s
字串,它將它們解釋為命令。有人知道我該如何解決嗎?
`
#!/bin/bash
while IFS= read -r line
do
$var=$var$line
echo $var
done < d.txt
` 這是我得到的錯誤:
./script.sh:第 6 行:=-格式:找不到訂單
./script.sh: 第 6 行: =-in:order not found
./script.sh:第 6 行:=-in2:找不到訂單
./script.sh:第 6 行:=-reference:找不到訂單
./script.sh:第 6 行:=-alignment:找不到訂單
./script.sh:第 6 行:=-variantcalling:找不到訂單
./script.sh:第 6 行:=-annotation:找不到訂單
./script.sh:第 6 行:=-iobio:找不到訂單
./script.sh:第 6 行:=-out:找不到訂單
./script.sh:第 6 行:=-BED:未找到訂單
uj5u.com熱心網友回復:
分配變數只有一點點錯誤。
var=$var$line
代替
$var=$var$line
uj5u.com熱心網友回復:
您可以通過使用來簡化一些事情tr:
$ var=$(tr '\n' ' ' < t.dat)
$ echo "${var}"
-format fastq -in data/test_data.1.fq.gz -in2 data/test_data.2.fq.gz -reference hg19 -alignment -variantcalling -annotation -iobio -out outdir/ -BED
您的代碼有一些錯誤$var=$var$line,https://shellcheck.net可以幫助除錯。
根據您發布的代碼,使用回圈:
#!/bin/bash
var=""
while IFS= read -r line
do
var="${var} ${line}"
done < d.txt
echo "${var}"
輸出:
$ ./script
-format fastq -in data/test_data.1.fq.gz -in2 data/test_data.2.fq.gz -reference hg19 -alignment -variantcalling -annotation -iobio -out outdir/ -BED
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/491925.html
