Bash의 변수, 브레이스 및 해시 문자를 가진 $ {0 ##…} 구문의 의미는 무엇입니까?

StackOverflow https://stackoverflow.com/questions/2059794

문제

방금 이해하지 못하는 Bash에서 코드를 보았습니다. 초보자 배쉬 스크립터이기 때문에 무슨 일이 일어나고 있는지 잘 모르겠습니다.

echo ${0##/*}
echo ${0}

이 두 명령에서 출력의 차이는 보이지 않습니다 (스크립트 이름을 인쇄). 그게 다 # 그냥 코멘트? 그리고 무엇입니까 /*. 의견이라면 어떻게 마감을 방해하지 않습니다. } 중괄호?

누구 든지이 구문에 대한 통찰력을 줄 수 있습니까?

도움이 되었습니까?

해결책

섹션을 참조하십시오 서브 스트링 제거 고급 배쉬 스크립팅 가이드 ‡ :

${string#substring}

가장 짧은 일치를 삭제합니다 substring 앞에서 $string.

${string##substring}

가장 긴 경기를 삭제합니다 substring 앞에서 $string.

서브 스트링은 와일드 카드를 포함 할 수 있습니다 *, 모든 것을 일치시킵니다. 표현식 ${0##/*} 가치를 인쇄합니다 $0 전방 슬래시로 시작하지 않는 한,이 경우 아무것도 인쇄하지 않습니다.

‡ 2019 년 3 월 7 일 현재 가이드는 일치가 $substring, 마치 substring 변수의 이름이었습니다. 그렇지 않습니다 : substring 단지 패턴 일뿐입니다.

다른 팁

Linux 팁 : Bash 매개 변수 및 매개 변수 확장

${PARAMETER##WORD}  Results in removal of the longest matching pattern from the beginning rather than the shortest.
for example
[ian@pinguino ~]$ x="a1 b1 c2 d2"
[ian@pinguino ~]$ echo ${x#*1}
b1 c2 d2
[ian@pinguino ~]$ echo ${x##*1}
c2 d2
[ian@pinguino ~]$ echo ${x%1*}
a1 b
[ian@pinguino ~]$ echo ${x%%1*}
a
[ian@pinguino ~]$ echo ${x/1/3}
a3 b1 c2 d2
[ian@pinguino ~]$ echo ${x//1/3}
a3 b3 c2 d2
[ian@pinguino ~]$ echo ${x//?1/z3}
z3 z3 c2 d2

참조 Parameter Expansion 섹션의 섹션 bash(1) 남자 페이지.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top