나는 bash 프로그래밍을 처음 사용합니다. 나는 길고 좋은 두 가지 가이드를 읽었지만 연산자와 키워드에 대해 머리를 어지럽 혔습니다.
어느 것이 더 일반적이고 널리 사용됩니까? 언제, 왜 사용해야하는지 모르겠습니다.
test,[[ ]]또는[ ]심지어(( ))$((exp))또는$[exp]-gt또는>,ge또는>=등등- 때 사용
<하고>또는( )우리는 그것을 탈출해야 할 때\:\<\(등 ==또는=(문자열 비교)
나는 사이의 기본적인 차이를 알고 [및 [[다른 질문이 나에게 신비하지만합니다.
미리 감사합니다
답변
test주어진 조건에 대해 (분명히) 테스트하는 쉘 내장입니다. 일부 오래된 쉘에는 특별한 명령이 필요합니다. 에서 프로그램을 찾을 수도 있습니다/usr/bin/test.[또한 어떤 상태를 테스트하는 프로그램입니다. 이 소프트웨어는 또한 닫는 괄호가 필요하며에서 찾을 수 있습니다/usr/bin/[.[[…]]test및 의 대안[입니다. Korn 쉘 (ksh)을 위해 개발되었습니다 . 그러나 2보다 큰 Bash 버전과 Z Shell에서도 찾을 수 있습니다. 이중 괄호에는 몇 가지 멋진 기능이 있습니다.- 쉘은 단어 분할이나 파일 이름 확장을하지 않습니다.
- 인용이 필요 없습니다.
- 대신
-a(AND) 또는-o(OR)을 사용할 수 있습니다&&또는||. - 는
=더 많은 작업을 수행 할 수 있습니다.
((…))와 같습니다let. 기본적으로((expression))와 같습니다let "expression". 그러나let둘 이상의 표현식을 사용할 수 있지만 이중 중괄호는 하나의 표현식 만 허용합니다.$((…))(및$[…])도 일부 계산을 수행합니다. 쉘은 중괄호 안의 표현식을 계산하려고 시도하고 표현식을 결과로 바꿉니다. 따라서로echo $((1+1))이어집니다echo 2. 따라서 껍질은 숫자 2를 인쇄합니다.
때마다 당신은 당신이 대시와 두 글자 (와 옵션을 사용해야하는 두 숫자를 비교하고자 할 때 -ge, -lt등). 문자열을 비교하려면 =또는 을 사용해야합니다 !=.
탈출에 관한 귀하의 질문은 대답하기가 매우 어렵습니다. 쉘 이외의 소프트웨어에 의존하기 때문입니다. 즉 grep, grep -E다른 탈출이 필요합니다. 이것은 또한과 사건 sed, awk그리고 다른 사람. 가장 좋은 방법은 맨 페이지를 보는 것입니다. 시간이 지나면 익숙해 져서 언제 이스케이프를 사용해야하는지 알게됩니다.