다음 명령을 실행하는 ksh 스크립트가 있습니다.
mkdir -p down/$JENKINS_URL
문제는 일부 $JENKINS_URL(문자열)에 HTTP://와 일부 HTTPS://가 포함되어 있어 다운 폴더 아래에 두 개의 하위 디렉터리가 생성되고 각각에 대한 하위 디렉터리가 생성된다는 것입니다. 이를 피하고 하위 폴더 아래에 HTTP 또는 HTTPS 없이 폴더 이름을 직접 만드는 방법은 무엇입니까?
답변1
JENKINS_URL
from.from에서 매개변수 대체를 사용할 수 있습니다.ksh 매뉴얼 페이지:
${name#pattern}, ${name##pattern}
패턴이 매개변수 이름 값의 시작 부분과 일치하는 경우 일치하는 텍스트가 대체 결과에서 제거됩니다. 단일 #은 가장 짧은 일치 결과를 가져오고, 두 개의 # 결과는 가장 긴 일치 결과를 가져옵니다.
예를 들어:
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