if 문에 단항 연산자를 여러 개 사용할 수 있습니까? 오류가 발생하는 코드 스 니펫은 다음과 같습니다.bash : if 문에 다중 단항 연산자
여기에서 코드를 수정하십시오.
if [ -f $input_file ] -a [ -f $output_file ] -a [ -f $log_file ] ]
then
### Some Code here
fi
감사 키란
if 문에 단항 연산자를 여러 개 사용할 수 있습니까? 오류가 발생하는 코드 스 니펫은 다음과 같습니다.bash : if 문에 다중 단항 연산자
여기에서 코드를 수정하십시오.
if [ -f $input_file ] -a [ -f $output_file ] -a [ -f $log_file ] ]
then
### Some Code here
fi
감사 키란
if [ -f "file1" -a -f "file2" -a "file3" ]; then
#some code
fi
[
은 명령의 if
성명의 일부입니다. 따라서 적절한 인수를 각각 잘못 전달하는 대신 전달해야합니다.
if [ arg1 arg2 arg3 arg4 ... ]
then
Cygwin 환경에서 C : \ cygwin \ bin \\ [. exe. 이 폴더를 처음으로 들여다 보는 정말 이상한 느낌. – Boldewyn
대부분의 리눅스 배포판에있는'/ usr/bin' 명령과 유사하지만,'['는 일반적으로 bash 내장 명령입니다. –
만 test ...
에 대한 바로 가기로 [ ... ]
연산자를 볼 수 있습니다. 옵션은 같은 방식으로 사용됩니다.
따라서 귀하의 경우에는 ghostdog74 방법을 쓰거나 수 중 하나 배시의 이중 브라켓을 사용하는 경우
if [ -f $input_file ] && [ -f $output_file ] && [ -f $log_file ]
then
### Some Code here
fi
, 당신은이 작업을 수행 할 수 있습니다
if [[ -f "$input_file" && -f "$output_file" && -f "$log_file" ]]
내가 청소기 찾을 수있는 여기에 표시된 다른 옵션보다 읽기 쉽습니다 (하지만 주관적입니다). 그러나 그것은 other advantages입니다.
그리고 ghostdog74과 같이 항상 파일 이름을 포함하는 변수를 인용해야합니다.
BASH가 이중 대괄호로 WordSplitting을 수행하지 않기 때문에 이중 대괄호를 사용하는 경우 파일 이름을 포함하는 변수를 인용 할 필요가 없습니다. http://mywiki.wooledge.org/BashFAQ/031 참조 – Cliff
Magic처럼 작동합니다. 빠른 응답을 주셔서 감사합니다. – Kiran