폴더 이름의 일부를 변수로 가져오기

폴더 이름의 일부를 변수로 가져오기

"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

몇 가지 특정 폴더의 마지막 두 문자만 필요한 경우 다음도 있습니다.

echo ${VAR1:(-2)}

또는 (@RudiC 확장) GNU 확장자가 있는 마지막 두 자리를 제외하고 숫자 없이 디렉토리를 선택하십시오.find

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

관련 정보