次のコマンドを実行するkshスクリプトがあります。
mkdir -p down/$JENKINS_URL
問題は、いくつかの$ JENKINS_URL(文字列)にHTTP://と一部のHTTPS://が含まれているため、ダウンフォルダの下に2つのサブディレクトリが作成され、それぞれにサブディレクトリが作成されることがあります。これを避け、サブフォルダの下にHTTPまたはHTTPSなしでフォルダ名を直接作成する方法は?
答え1
JENKINS_URL
from.fromからパラメータ置換を使用できます。ksh マニュアルページ:
${name#pattern}, ${name##pattern}
パターンがパラメータ名の値の先頭に一致すると、一致するテキストが代替結果から削除されます。単一の#は最短の一致結果を取得し、2つの#結果は最長の一致結果を取得します。
たとえば、
JENKINS_URL="http://abc"
mkdir -p "down/${JENKINS_URL#*://}"
JENKINS_URL="https://def"
echo mkdir -p "down/${JENKINS_URL#*://}"
上記のスクリプトはすべてのプロトコルプレフィックスを削除します。スクリプトを実行した結果は次のとおりです。
mkdir -p down/abc
mkdir -p down/def