Bash Scriptingを使用してパスで文字列/dirを一致させる方法
質問
パスから情報を使用して関連するRPM名を作成するMakeFileを作成しようとしています。 2つの異なる可能なパスがあるとします。
PATH1 = /usr/local/home/jsmith/code/main
PATH2 = /usr/local/home/jsmith/code/dev/ver2
パスで「メイン」が検出された場合、RPM名に「メイン」を検出して追加したいと思います。パスで「dev」が検出された場合、rpm名に「ver2」を検出して追加する必要があります。
私はシェルスクリプトを初めて使用していますが、どこから始めればよいかについては良い考えがありません。 Pythonのようなもので簡単にこれを行うことができますが、Makefileのためにシェルで行う必要があります。
パス内の「メイン」は一定ですが、「メイン」が存在しない場合、開発パス名を抽出する必要があります。これがいくつかの刈り取りの例です:
/usr/local/home/jsmith/code/main/usr/local/home/jsmith/code/dev/ver_usa/usr/local/homith/jsmith/dev/ver_mexico/usr/home/home/jsmith/code /dev/ver3
「dev」が存在する場合、「ver_usa」、「ver_mexico」、「ver3」などを抽出する必要があります。
解決
「メイン」と「ver2」が一定ではないと仮定して、このようなもの
some_rpm_name="some rpm"
PATH=/usr/local/home/jsmith/code/main
#PATH2=/usr/local/home/jsmith/code/dev/ver2
s=${PATH##*/}
case "$s" in
*main ) RPM_NAME="${some_rpm_name}_main";;
*ver2) RPM_NAME="${some_rpm_name}_ver2";;
esac
echo $RPM_NAME
他のヒント
使用する grep
そして、返品値を確認しますか?
あなたも できる MakefileでPythonを実行します。
パスの最後の要素は常にあなたが望むもののようです。
rpmname=$rpmname+${pathname##*/}
また
rpmname=$rpmname+$(basename pathname)
所属していません StackOverflow