2013-06-26 3 views
2

누구나 다음 bash 명령이 수행하는 것을 설명해 주실 수 있습니까?배쉬 명령 값 지정

CMD_PATH=${0%/*} 

CMD_PATH 변수에 할당 된 값은 무엇입니까?

+0

또한 참조하십시오 http://stackoverflow.com/questions/59895/can-a-bash-script-tell-what-directory-its-stored-in – devnull

답변

2

. 스크립트에 있으면 이름이 표시됩니다. What exactly does "echo $0" return에서

:

$ 0은 실행중인 프로세스의 이름입니다. 쉘 내부에서 사용하면 쉘의 이름을 반환합니다. 스크립트에서 사용하는 경우 스크립트의 이름이됩니다.

의 그것을 설명하자

$ echo $0 
/bin/bash 

것은 그런 떠들썩한 대체가 이루어집니다

$ echo ${0} 
/bin/bash 

과 동일합니다 : 마지막 슬래쉬까지 텍스트를 얻을 :

$ echo ${0%/*} 
/bin 

이를 대체는이 예와 함께 이해할 수 있습니다 :

$ a="hello my name is me" 
$ echo ${a% *} 
hello my name is 
+1

맞지 않습니다, 그것은 단지 마지막 슬래시와 그 후에 텍스트를 제거합니다. – anubhava

+0

물론, 제대로 확인하지 못했습니다. 내 업데이트 답변, @anubhava보기 – fedorqui

1

현재 실행중인 스크립트가 시작된 디렉터리의 이름을 반환합니다.

을 테스트하려면 :

  • 디렉토리 /tmp/test 만들 :

    mkdir /tmp/test 
    
  • 이 같은 내용 t.sh` '파일을 만듭니다 :

    #!/bin/bash 
    
    echo $0 
    echo ${0%/*}  
    
  • t.sh 실행 권한을 부여 :

    chmod +x /tmp/test/t.sh 
    
  • 하면 실행하면 볼 수 있습니다 : 그것은 작업 실행중인 프로세스의 첫 번째 디렉토리를 보여줍니다

    /tmp/test/s.sh 
    /tmp/test 
    
4

그것은 스크립트가 현재에서 실행되는 폴더 (때로는 스크립트가 실행 방법에 따라 in most cases)이다 $0 변수에서 슬래시 문자의 마지막 선두로부터 이외에는 아무 것도 제거합니다.