문제

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

전체 스크립팅에 익숙하지 않으므로 확실하지 않습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top