2012-10-13 4 views
1

이 명령을 발견했습니다. 소스가 bash 프로필을 다시로드하고 Ubuntu에서 필요한 Ruby 권한에 대한 고정 권한을 이해합니다. 그러나 이전에 그 부분은 무엇입니까 & &을 의미합니까?[[-s는 ​​(는) 리눅스 쉘에서 의미가 있습니다

[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm" 

답변

2

에 조금 아래로 스크롤합니다.

이에 대한 자세한 내용은 파일이 존재 및 비인지) 단일 브래킷

-s 시험을 대체 할 수 How to use double or single brackets, parentheses, curly braces를 볼 수 있지만 내가 아는 한 -s은 추가 기능 및 이중 브라켓이 필요하지 않습니다 empty

&&은 왼쪽의 명령이 오류 리턴 코드없이 실행되는 한 오른쪽에서 자동으로 명령을 실행합니다.

그래서이 문은 파일이 존재하고 비어 있지 않은지 여부를 테스트하고, 그렇다면 현재 쉘 환경에 파일을 제공합니다.

+0

감사합니다. 내 xmark에 bash 맨 페이지를 저장했습니다. –

3

[[...]] 부분은 연산자를 사용하여 조건을 테스트 할 수 있습니다. if 문이라고 생각하십시오. 귀하의 예제에서, 당신은 참조 파일이 비어 있지 않은지 테스트하는 -s 연산자를 사용하고 있습니다. 이

+2

하지만 대괄호로 묶어야합니다. 표준 양식이 더 짧을 때 bash-ism을 사용할 이유가 없습니다. – Nemo

+0

아주 좋은 답변들. Red Hat RHCSA 서적에서이 표기법을 찾을 수 없었습니다. –

1

[[ 빈 아니라면

그래서, 기본적으로,이 명령은 당신은 소스 RVM 파일을 게시 bash는 내장 된 테스트 기능. -s은 다음 파일의 크기가 0보다 큰 경우 true를 반환합니다. man bash (Conditional Constructs)을 참조하십시오.

[[

]]|| 대신 -o&& 대신 -a 같은 구조를 수 있도록, 기존의 프로그래밍 언어에 더 유사하다 고급 기능을 사용할 수 있습니다 : 현실을 파괴하자 [[...]]

+0

고맙습니다. 이 답을 어디서든지 찾을 수 없었습니다. –

관련 문제