일치 후 다음 단어를 인쇄합니다.

일치 후 다음 단어를 인쇄합니다.

Linux의 bash 스크립트에서 다음을 시도하고 있습니다.

envA="prdk8s--staging-a"
envB="prd-k8s--sandbox"

for envCode in $envA $envB;
do
   Code=$(echo $envCode | cut -d "--" -f 1)
   echo $Code
done

그러나 이는 실패합니다.

cut: the delimiter must be a single character
Try 'cut --help' for more information.

예상 출력:

staging
sandbox

변수 값 $envA 및 $envB에서 "--" 다음에 다음 단어를 인쇄하는 방법이 있나요?

답변1

셸 자체 매개변수 확장을 사용하여 선행 및 후행 구성요소를 다듬을 수 있습니다.

for envCode in "$envA" "$envB"; do 
  t=${envCode#*--}
  printf '%s\n' "${t%-*}"
done
staging
sandbox

삭제하고 싶다면 ##다음을 사용할 수 있습니다.%%가장 긴대신에가장 짧은선행 및 후행 일치 - 이것이 필요한지 귀하의 예에서 명확하지 않습니다.

예시 보기BashGuide: 매개변수 확장

관련 정보