2017-03-14 2 views
0

私はすべてのファイル(ESファイル:geneX.csv)のためにという私はこのgene.shテストのbiginigで変数文字列をファイルtxtに渡す方法は?

のようなプログラムの一般的な問題を持っている

持っている:ジェネックス/ジェネックス遺伝子の名前(例でディレクトリを作成します.csv)次にこのプログラムはgene.sh内の他のプログラムをコンパイルしますが、このprogrmはvariebleを必要とし、どうやってそれを行うのか分かりません。

これはこれはプログラムgetChromosomichPositions.shあるgene.sh

#!/bin/bash 

# Create a dictory for each file *.xls and *.csv 

for fname in *.xlsx *csv 
    do 
      dname=${fname%.*} 

      [[ -d $dname ]] || mkdir "$dname" 
      mv "$fname" "$dname" 
    done 

# For each gene go inside the directory and compile the programs getChromosomicPositions.sh to have the positions, and getHapolotipeStings.sh to have the variants 

for geni in */; do 
    cd $geni 
    z=$(tail -n 1 *.csv | tr ';' "\n" | wc -l) 
    cd .. 
    cp getChromosomicPositions.sh $geni ---> 
    cp getHaplotypeStrings.sh $geni 
    cd $geni 
    export z 
    ./getChromosomicPositions.sh *.csv 
    export z 
    ./getHaplotypeStrings.sh *.csv 
    cd .. 
done 

プログラムです:

rm chrPosRs.txt 

grep '^Haplotype\ ID' $1 | cut -d ";" -f 4-61 | tr ";" "\n" | awk '{print "select chrom,chromStart,chromEnd,name from snp147 where name=\""$1"\";"}' > listOfQuery.txt 

while read l; do 

    echo $l > query.txt 
    mysql -h genome-mysql.cse.ucsc.edu -u genome -A -D hg38 --skip-column-names <query.txt> queryResult.txt 

    if [[ "$(cat queryResult.txt)" == "" ]]; 
    then  

     cat query.txt | 
     while read line; do 
       echo $line | awk '$6 ~/rs/ {print $6}' > temp.txt; 
       if [[ "$(cat temp.txt)" != "" ]]; 
         then cat temp.txt | awk -F'name="' '{print $2}' | sed -e 's/";//g' > temp.txt; 
      ./getHGSVposHG19.sh temp.txt ---> Hear the problem---> 
       else 
         echo $line | awk '{num=sub(/.*:g\./,"");num+=sub(/\".*/,"");if(num==2){print};num=""}' > temp2.txt 
       fi 
     done 
     cat query.txt >> varianti.txt 
     echo "Missing Data" >> chrPosRs.txt 
    else 
     cat queryResult.txt >> chrPosRs.txt 
    fi 

done < listOfQuery.txt 

rm query* 

は、問題を聞く:

私は、ファイルの一時に入力する必要があります。 txtを読み込み、ファイルの先頭に自動的に入れる。gene.shの変数$ geni

どうすればいいですか?

+0

があります: 35941G>私は変数$ GENIて文句を言わない (例:GENI = "CBA1"): CBA1:でファイルTEMP.TXTを変更35941G> –

+1

コメントする代わりにあなたの質問を編集できませんか?そしてあなたがそれをしている間に、書式設定、特に '!#/ bin/bash'行を修正することができます。 \ [編集]あなたが書いている間に行を修正しました。 –

答えて

0

スクリプトを呼び出すときに最初の引数として"$geni"を渡し、残りの引数を期待される.csvファイルとして扱うのはなぜでしょうか。

./getChromosomicPositions.sh "$geni" *.csv

それは使用することができるように、また、あなたは、スクリプトの環境変数として設定することができます(またはそれをエクスポートします)。

echo "${1}:$(cat temp.txt | awk -F'name="' '{print $2}' | sed -e 's/";//g')

またはとして渡された場合:あなたは2番目のスクリプトで利用でき、それを持っていたら、最初の引数として渡された場合はいずれの場合においても

geni="$geni" ./getChromosomicPositions.sh *.csv

、あなたは

を行うことができます環境変数:

echo "${geni}:$(cat temp.txt | awk -F'name="' '{print $2}' | sed -e 's/";//g')

TEMP.TXTで例えば
+0

私は実際にハーフのためにあなたを尋ねますが、私は両方のコマンドを試してみましたが、同じケースではうまくいかない、どうすればいいですか –

関連する問題