인수의 기본 이름을 사용하는 스크립트를 작성하려고합니다. 그런 다음 인수에 확장이 있는지 확인합니다. 있는 경우 확장자를 인쇄합니다. 내가베이스 이름의 출력이 무엇인지 확인하기 위해 최종 $의 기본 이름을 $ 1 반향있어Bash 기본 이름 구문
file=basename $1
ext=${file%*}
echo ${file#"$stub"}
echo $basename $1
:
여기 내 코드입니다.
일부 테스트는 공개 :
testfile.sh one.two
./testfile: line 2: one.two: command not found
one.two
testfile.sh ../tester
./testfile: line 2: ../tester: No such file or directory
../tester
그래서 어느 $의 기본 이름 $ 대략 1있다. 나는 문법 오류라는 것을 알고 누군가 내가 잘못하고있는 것을 설명 할 수 있을까?
편집 :와 지금 내 문제를 해결했습니다
:
베이스 명 내 주장을 감소file=$(basename "$1")
stub=${file%.*}
echo ${file#"$stub"}
는, 모두 감사합니다.
정확한 구문은 file = $ (basename $ 1)입니다. file = $ {1 ## * /}을 사용하면 모든 '* /'시퀀스가 제거됩니다. 실제로 루프에서 파일을 처리 할 때 basename 명령보다 훨씬 빠릅니다. –