나는 sample.txt.pgp와 같은 문자열을 가지고 있으며 쉘 스크립트에서 sample.txt를 반환하려고합니다 (그러나 문자열 길이는 ".pgp"앞에있는 모든 문자가 달라질 수 있습니다). substr 함수가 있습니까? 마찬가지로, 내가 substr('sample.txt.pgp', -4, 0)
않았다면, 그것은 sample.txt를 반환해야합니까? 지금은 그렇지 않습니다. 그래서 문법이 잘못되었거나 substr이 함수가 아닌지 궁금합니다.쉘 스크립트에서 유닉스 substr?
답변
당신은 basename
사용할 수 있습니다
$ basename sample.txt.pgp .pgp
sample.txt
사용 역 따옴표 또는 $()
을 변수에 결과를 넣어 원하는 경우 :
$ FILE=sample.txt.pgp
$ VARIABLE=$(basename "$FILE" .pgp)
$ echo $VARIABLE
sample.txt
a='sample.txt.pgp'
echo ${a%.*} # sample.txt (minimal match)
echo ${a%%.*} # sample (maximal match)
이것은 흥미로운 것 같습니다 ... 달러 기호는 무엇이며 %는 무엇을 나타 냅니까? 이걸 설명하는 페이지가 있습니까? – TwixxyKit
@KnockKnockWhosThere : 자세한 정보는 http://www.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html#tag_18_06_02을 참조하십시오. :-) –
더 제약이있는 버전 :'$ {a % .pgp}'는'.pgp' 확장자가 있으면 제거합니다. 원본은 확장 기능을 전혀 제거하지 않습니다 (어떤 경우에는 유용 할 수 있습니다). –
- 1. 쉘 스크립트에서 유닉스 사용자 이름과 패스워드를 확인하십시오
- 2. 유닉스 쉘 글 로빙
- 3. 유닉스 쉘 이벤트?
- 4. 구문 오류 bash 스크립트에서 expr substr 사용
- 5. 유닉스 쉘 프로그래밍 특수 변수
- 6. 쉘 스크립트에서 프로세스 종료
- 7. 쉘 스크립트에서 SQL 실행하기
- 8. 쉘 스크립트에서 su 사용하기
- 9. 쉘 스크립트에서 비교하는 방법?
- 10. 쉘 스크립트에서 로그인 자동화
- 11. 선호하는 #! 쉘 스크립트에서
- 12. 가상 데스크톱을 회전시키는 유닉스 쉘 명령
- 13. Windows에서 유닉스 파워 쉘 명령을 호출
- 14. 쉘 배관 및 대부분의 유닉스 쉘와 윈도우
- 15. 유닉스 쉘 스크립트를 작성하여 피드 파일 만들기
- 16. 유닉스 쉘 스크립트 하위 프로세스 결과
- 17. 쉘 스크립트에서 "$$"은 무엇을 의미합니까?
- 18. 쉘 스크립트에서 elif를 사용하는 경우
- 19. 쉘 스크립트에서 xml을 구문 분석
- 20. 쉘 스크립트에서 설정 파일 읽기
- 21. 쉘 스크립트에서 오라클 쿼리 실행
- 22. 제거 확장 속성 : 쉘 스크립트에서
- 23. 쉘 스크립트에서 sed에 변수 사용
- 24. Unix 쉘 스크립트에서 입력 정렬하기
- 25. 쉘 스크립트에서 bitbucket에 다운로드 게시
- 26. 쉘 스크립트에서 db2 출력을 캡처하십시오.
- 27. Python - substr
- 28. 다른 쉘 스크립트에서 쉘 스크립트를 호출 할 때의 차이점
- 29. 쉘 스크립트에서 쉘 명령을 실행하면 오류가 발생해도 멈추지 않습니다.
- 30. 하나의 쉘 스크립트에서 다른 쉘 스크립트로 변수를 내 보냅니다.
'-s suffix'표기법을 사용하는 것이 흥미 롭습니다. POSIX에 의해 표준화되지 않은; 고전적인 표기법은'$ (basename $ file .pgp)'(이름이 변수 '$ file'에 있다고 가정)입니다. –
@Jonathan 네, 정말로! 나는 OS X 머신에서'man basename'을 그냥했고'-s' 옵션을 보았습니다. 그것은 좀 더 융통성이 있었고 (하나 이상의 문자열을 처리 할 수 있음) POSIX가 아닌 것을 알지 못했습니다. 내 대답을 편집 할게. –
수정 됨; 또한 파일 이름의 공백을 지원하기 위해 큰 따옴표를 사용했습니다. –