[bash] 변수 끝에서 문자 제거

Bash 자동 완성은 디렉토리 이름 끝에 /를 추가합니다. 위치 매개 변수에서 어떻게 제거 할 수 있습니까?

#!/bin/sh

target=$1

function backup(){
  date=`date "+%y%m%d_%H%M%S"`
  PWD=`pwd`
  path=$PWD/$target
  tar czf /tmp/$date$target.tar.gz $path
}

backup



답변

사용하다

target=${1%/}

참조 .


답변

사용하다 target=${1%/}

자세한 내용 은이 bash 스크립팅 안내서의 매개 변수 대체를 참조하십시오 .


답변

경로를 정식화하는 더 나은 솔루션은 존재하지 않는 경우 realpath $path또는 -m옵션으로 생각 합니다. 이 솔루션은 불필요한 슬래시를 자동으로 제거하고 암호를 추가합니다


답변

bash3은 perl-similar 정규식을 bash에 추가했습니다. 언급 된 가이드는 GNU 공식 가이드 뿐만 아니라이 가이드도 다루지 만 모든 참조가 아닙니다.

내가 뭘 한거지?

대체 2.19/*2.19.

해결책

VER="2.19/foo-bar"
NEWVER=${VER%/*}


답변