フォルダ名の一部を変数としてインポートする

フォルダ名の一部を変数としてインポートする

「ABFD00」や「KASD02」などの2つのIDを持つ2つのフォルダ名があります。

コマンドで使用するには、フォルダの小さな部分を変数(00と02)として必要とします。良い:

sapcontrol -nr $sid -function GetSystemInstanceList

答え1

出力を変数に割り当ててから、パターンマッチングを使用できます。たとえば、次のようになります。

VAR1=ABCD01
echo ${VAR1##*[[:alpha:]]}

これにより、変数からすべてのアルファベット文字が削除され、「01」が印刷されます。

答え2

努力する

$ find . -name "[A-Z]*" -type d | 
while read FN
  do    echo  sapcontrol -nr ${FN##*[A-Z]} -function GetSystemInstanceList 
  done
sapcontrol -nr 00 -function GetSystemInstanceList
sapcontrol -nr 02 -function GetSystemInstanceList

答え3

いくつかの特定のフォルダの最後の2文字だけが必要な場合は、次もあります。

echo ${VAR1:(-2)}

または(@RudiC拡張)GNU拡張子を持つ最後の2桁を除いて、数字なしでディレクトリを選択します。find

find . -type d -regex "[^0-9]*[0-9][0-9]" -exec sh -c 'echo sapcontrol -nr ${1:(-2)} -function GetSystemInstanceList' sh {} \;

関連情報