2012-04-09 3 views
-1

私はパッケージビルドの依存関係を得るためにdebianコントロールファイルを解析する関数を書いています。以下は機能していない機能です。"control"ファイルを解析するスクリプトの問題

Debianコントロールファイルは、常にコロン(:)が続く特定の「タイトル」(つまり、Build-Depends:)のみで区切られています。これにより、同じ行にBuild-Dependsというタイトルがない複数の行に複数の依存関係が表示される可能性がありました(そうでなければ、すでにこれが有効になっています)。

私が見ている特定の問題は、grep行から "コマンドが見つかりません"というエラーが表示されていることです。 「コマンド」は、制御ファイルからの単語/テキストです。私のスクリプトに関する知識は限られています。私はこれをまとめて "google"を使っていたので、私は間違いなくヒントを感謝しています。変数を参照するすべての行をエスケープすることにより

function FindDep() 
{ 
    CheckVar=0 
    echo "Running Find Depend." 
    ControlPath=$TmpBuild/Deb-ConfFiles/$1/debian/control 
    cat $ControlPath | while read line ; 
    do 
    TempVar=`grep Build-Depends $line` 
    if [ "$TempVar" != "" ]; then 
     BuildDep=`sed s/Build-Depends://g $TempVar | sed s/Build-Depends-Indep\://g | grep -o '[a-z]*[-]*[a-z]*'` 
     CheckVar=1 
    elif [ $CheckVar == 1 ]; then 
     TempVar=`grep : $line` 
     if [ "TempVar" != "" ]; then 
      BuildDep="$BuildDep `sed s/Build-Depends://g $TempVar | sed s/Build-Depends-Indep\://g | grep -o '[a-z]*[-]*[a-z]*'`" 
     else 
      CheckVar=0 
     fi 
    fi 
    done 
    echo "Here is what is listed as dep for " $1 "--" $BuildDep 
    for y in $BuildDep; do 
    echo $y 
    IsInstalled="dpkg -s $y | grep Status" 
    if [ "$IsInstalled" == "" ]; then 
     echo "installing " $y 
     dpkg -i $y > /dev/null 2>&1 
     if [ $? -gt 0 ]; then 
     apt-get -f --force-yes --yes install >/dev/null 2>&1 
     fi 
     dpkg -i $y > /dev/null 2>&1 
    fi 
    done 
    echo "Ending Find Depend" 
} 

答えて

0

スタート、例えば、これを回し...これまで

ControlPath=$TmpBuild/Deb-ConfFiles/$1/debian/control 

$ y=hello world 
bash: world: command not found 

$ y="hello world" 

$ cat $y  
cat: hello: No such file or directory 
cat: world: No such file or directory 

$ cat "$y" 
cat: hello world: No such file or directory 
+1

ControlPath="$TmpBuild/Deb-ConfFiles/$1/debian/control" 

これが理由です提案していただきありがとうございます - 私は試してみましたが、残念ながらそれはfference。私が見なければならないものは何ですか? – nasa