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: 매개변수 확장