変数の値をコマンドの出力と等しく設定したい小さなスクリプトを書いています。ただし、問題のコマンドは、コマンドライン引数を使用した別のスクリプトの呼び出しです。このシナリオでは通常どおりバックティックを使用していますが、問題は、コンピューターがエラーを出し、コマンドライン引数をコマンドとして解釈しようとすることです。
#!/bin/bash
filename="$1"
while read p; do
echo "This is the gene we are looking at: ""$p"
lookIn= `./findGeneIn "$p" burgdorferi afzelii garinii hermsii miyamotoi parkeri`
echo "$lookIn"
#grep "$p" "$lookIn""/""prokka_""$lookIn""/*.tsv" | awk '{print $1}'
done < $filename
変数lookIn
をの出力に等しく設定しようとしています./findGeneIn "$p" burgdorferi afzelii garinii hermsii miyamotoi parkeri
。ここ./findGeneIn
で、はスクリプトであり、burgdorferi、...、parkeriという単語は./findGeneIn
。のコマンドライン引数です。
問題は、「burgdorferi:コマンドが見つかりません」というエラーが表示されることです。したがって、それらの引数をコマンドとして解釈しようとしています。それをしないようにするにはどうすればよいですか?
lookIn= `./findGeneIn "$p" burgdorferi afzelii garinii hermsii miyamotoi parkeri`
^
余分なスペースを削除します。割り当てには、等号の前後にスペースを入れてはなりません。
そこにスペースがあると、Bashは行をとして解析します。var=value command
これは$var
一時的にに設定されたコマンドを実行し"value"
ます。または、この場合、バッククォートの結果をコマンド名およびlookIn=
空の変数割り当てとして解釈します。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加