나는 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
그리고 다른 사람. 가장 좋은 방법은 맨 페이지를 보는 것입니다. 시간이 지나면 익숙해 져서 언제 이스케이프를 사용해야하는지 알게됩니다.