문제
OS X에서 Java 프로그램을 시작하기 위해 간단한 bash 스크립트를 만들고 싶습니다. 파일의 이름, 파일 경로 및 즉각적인 작동 폴더에는 모두 공간이 포함되어 있습니다. 내가 이것을 할 때 :
#!/bin/sh
cd `dirname $0`
나는 얻다
usage: dirname path
나는 또한 모든 종류의 다른 장소에 인용문을 넣으려고 노력했습니다. 가장 정교한 예입니다
cd "`dirname \"$0\"`"
아무것도 효과가 없었습니다. 오류 메시지를 받거나 암호화 된 "사용법 : Dirname Path"메시지를받습니다.
효과가있는 다른 방법은 무엇입니까?
편집하다: 이것은 나 외에는 누구에게도 문제가되지 않는 것 같습니다. 그래서 그것은 단지 내 상자 일뿐입니다. 이 특정 문제에 효과가있는 유일한 솔루션이기 때문에 아래의 내 게시물을 받아 들일 것입니다. 그러나 나는 다른 모든 사람들을 위해 일하는 것처럼 보이는 솔루션을 확실히 노력하고 있으며 모든 사람의 도움에 감사드립니다.
해결책 3
마침내 나를 위해 일한 것은 이것을 바꾸는 것입니다.
#!/bin/sh
cd `dirname $0`
이에:
#! /bin/zsh
cd "${0:h}"
또한 파일 이름과 공간이 포함 된 파일 경로도 지원합니다. 내가 찾은 곳은 다음과 같습니다. http://rentzsch.com/unix/locationawarecommandfiles
다른 팁
는 어때:
cd "$(dirname "$0")"
그것은 나를 위해 저에게 효과적입니다.
#!/bin/sh
cd "$(dirname "$0")"
내부 이중 인용문을 피하는 것은 불필요합니다.
cd "`dirname "$0"`"
그러나 그것은 문제의 근원에 도달하지 못합니다. 어떻게 든 $ 0의 가치가 비어있는 것처럼 보이거나 이상한 것입니다. 이 방법으로 스크립트 실행을 변경해보십시오.
bash -x scriptname
이렇게하면 변수가 보간하여 실행하기 전에 각 라인이 반향됩니다. 디버깅에 매우 유용합니다. 또한 매우 도움이됩니다.
-u: abort on attempt to use undefined variable
-e: abort on first error
이에 대해 잘 모르겠지만 ... 당신의
#!/bin/sh
강타가 아닌 것을 가리 킵니다. 내가 보통 사용하는 것은 다음과 같습니다.
#!/usr/bin/bash
전체 스크립팅에 익숙하지 않으므로 확실하지 않습니다.