문자열에서 마지막 "/script.sh" 부분을 추출하는 방법은 무엇입니까?

문자열에서 마지막 "/script.sh" 부분을 추출하는 방법은 무엇입니까?

이 입력을 어떻게 수정합니까?

/home/USER/Desktop/script.sh

이 출력의 경우:

/home/USER/Desktop/

...사용 bash하거나 perl?

물론 script.sh그것은 무엇이든 될 수 있습니다: (예: scrasdfipt.sh, 등) 그리고 그 앞의 경로는 무엇이든 될 수 있습니다.

답변1

dirname /home/USER/Desktop/script.sh

답변2

~을 위한정밀한질문, 당신은 사용할 수 있습니다

printf "$(dirname /home/USER/Desktop/script.sh)/"

내 생각에 이것은XY 문제, 내의 파일을 참조하려고 합니다.현재 스크립트와 동일한 디렉터리. 만일이 경우라면:

current_dir="$(dirname -- "$0")"

이 시점에서 다음과 같은 작업을 수행할 수 있습니다.

source "${current_dir}/foo.sh"
echo foo > "${current_dir}/bar.txt"

답변3

배시 사용:

$ dirname -- "$string"

다음과 같이 같은 방법으로 마지막 비트를 얻을 수도 있습니다.

$ basename -- "$string"

답변4

와는 별개로dirname제안, 다음을 사용하여 하위 문자열을 제거할 수도 있습니다.매개변수 확장:

dir=/home/USER/Desktop/script.sh
echo ${dir%/*}
/home/USER/Desktop

관련 정보