0

RPM パッケージの強化/開発は初めてで、インストール後のスクリプトに取り組んでいます。

インストール後スクリプトの実行時にシンボリック リンクを作成したいのですが、問題が発生しました。

スクリプトの実行はシンボリック リンクの作成では正常に機能していますが、「$RPM_pckg_home/bin」のシンボリック リンクを確認すると、コマンドは正常に実行されますが、アップグレード部分では作成されません。

サンプル コードは次のとおりです。

Original_bin_path=/a/b/c
RPM_pckg_home=/d/e/f

if [[ "$1" -eq 1 ]]; then # 1 for install

  cd $RPM_pckg_home/bin

            for cmd in `ls Original_bin_path` ; do

            ln -s $Original_bin_path/${cmd} ${cmd}

            done

 elif [[ "$1" -eq 2 ]]; then # 2 for Upgrade

  cd $RPM_pckg_home/bin

        for cmd in `ls Original_bin_path` ; do

        rm ${cmd}
        ln -s $Original_bin_path/${cmd} ${cmd}

        done
fi

どこが問題になるか教えてください。

4

1 に答える 1

2

タイプミスの可能性は別として、ループの書き方は次のとおりです。

if [[ "$1" -eq 1 ]]; then # 1 for install    
    for cmd in "$Original_bin_path"/* ; do
        ln -s "${cmd}" "$RPM_pckg_home/bin"
    done
elif [[ "$1" -eq 2 ]]; then # 2 for Upgrade
    for cmd in "$Original_bin_path"/*; do
        rm "${cmd}"
        ln -s "${cmd}" "$RPM_pckg_home/bin"
    done
fi

の出力を反復処理する代わりにls、グロブに一致するファイルを反復処理し、rmおよびlnコマンドを変更して の値の変化に対応します$cmd

于 2015-08-14T13:16:12.710 に答える