[]와 []의 차이점은 무엇입니까?
나는 bashman 페이지를 보았고 그리고.[[
조건식을 사용한다고 합니다.그런 다음 조건식 섹션을 살펴보니 다음과 같은 연산자가 나열되어 있습니다.test
)[
).
그래서 저는 궁금해요, 무엇이 다른지.[
그리고.[[
시서에바?
[[
바시의 개선 사항입니다.[
bashbash.bash를 대상으로 더될 수 있도록 몇 가지 된 기능이 .즐겨찾기는 다음과 같습니다.
그것은 껍질의 구문적 특징입니다, 그래서 그것은 약간의 특별한 행동을 가지고 있습니다.
[
없습니다.당신은 더 이상 mad와 같은 변수를 인용할 필요가 없습니다.[[
빈 문자열과 공백이 있는 문자열을 보다 직관적으로 처리합니다.예를 들어 다음과 같이[
당신은 글을 써야 합니다.if [ -f "$file" ]
공백이 있는 빈 문자열 또는 파일 이름을 올바르게 처리합니다.와 함께
[[
따옴표는 불필요합니다.if [[ -f $file ]]
에 구은문기기때문에이능수, 사있습다니할용당이신이것▁you다를 사용할 수 .
&&
그리고.||
및 " " "에 대한 입니다.<
그리고.>
문자열 비교를 위해.[
명령어이고 일반명작수행수없할습다니이을업로령므이이므로 이 작업을 할 수 .&&
,||
,<
,그리고.>
는 명령줄 인수로 일반 명령에 전달되지 않습니다.것은훌니다합륭그를 가지고 .
=~
정규식 일치를 수행하기 위한 연산자입니다.와 함께[
당신은 쓸지도 모릅니다.if [ "$answer" = y -o "$answer" = yes ]
와 함께
[[
당신은 이것을 다음과 같이 쓸 수 있습니다.if [[ $answer =~ ^y(es)?$ ]]
또한 저장캡그액룹수있다습니세에 수 .
BASH_REMATCH
를 들어 .예를 들어어입니다.${BASH_REMATCH[1]}
위에 전체 "예"를 입력하면 "예"가 됩니다.당신은 무료로 글로빙이라고 불리는 패턴 매칭을 받을 수 있습니다.예를 입력하는 방법에 대해 덜 엄격할 수 있습니다.사용자가 y-anything을 입력해도 괜찮을 수 있습니다.준비 완료:
if [[ $ANSWER = y* ]]
bash 확장이므로 sh 호환 스크립트를 작성하는 경우 다음을 수행해야 합니다.[
당신이 가지고 있는지 확인하세요.#!/bin/bash
이중 괄호를 사용하는 경우 스크립트에 대한 shebang 줄입니다.
참고 항목
[
와 동일합니다.test
내장되어 있으며, 다음과 같이 작동합니다.test
이진수(man test)- 거의 같은
[
많은 UNIX와 유사한 환경에서 다른 모든 sh 기반 셸에서 - 단일 조건만 지원합니다.bash를 사용한 여러 테스트
&&
그리고.||
연산자는 별도의 괄호 안에 있어야 합니다. - 기본적으로 'not' 연산자를 지원하지 않습니다.조건을 반전하려면 다음을 사용합니다.
!
명령 반환 값을 반전하기 위해 셸의 기능을 사용하는 첫 번째 브래킷 외부. ==
그리고.!=
문자 그대로의 문자열 비교입니다.
- 거의 같은
[[
바시야- bash에 따라 다르지만 다른 셸에서도 유사한 구조를 구현했을 수 있습니다.구식 UNIX에서 기대하지 마세요.
==
그리고.!=
bash 패턴 일치 규칙 적용, 의 "패턴 일치" 참조man bash
- 을 가지고 있습니다.
=~
정규식 일치 연산자 - 괄호 및 를 사용 가능
!
,&&
,그리고.||
을 결합할 수 있습니다.
그것을 제외하면, 그것들은 꽤 비슷합니다. 대부분의 개별 테스트는 그들 사이에서 동일하게 작동합니다. 다른 테스트를 논리적 AND/OR/NOT 연산과 결합해야 할 때만 흥미로워집니다.
가장 중요한 차이점은 코드의 명확성입니다.예, 예, 위에서 말한 것은 사실이지만 [ ]는 특히 AND(&&), OR(|) 및 NOT(!) 연산자와 관련하여 고급 언어에서 예상되는 것과 코드를 일치시킵니다.따라서 시스템과 언어 사이를 이동할 때 스크립트를 더 빨리 해석할 수 있어 삶이 더 쉬워집니다.UNIX/리눅스 참조 자료에서 핵심 내용을 확인하십시오.당신은 특정 상황에서 유용한 몇 가지 핵심적인 부분을 발견할 수 있지만, 당신은 항상 명확한 코드에 감사할 것입니다!어떤 스크립트 조각을 읽고 싶으십니까?문맥 밖에서도 첫 번째 선택은 읽고 이해하기가 더 쉽습니다.
if [[ -d $newDir && -n $(echo $newDir | grep "^${webRootParent}") && -n $(echo $newDir | grep '/$') ]]; then ...
또는
if [ -d "$newDir" -a -n "$(echo "$newDir" | grep "^${webRootParent}")" -a -n "$(echo "$newDir" | grep '/$')" ]; then ...
반로에 bash와 [
,[[
변수 값의 단어 분할을 방지합니다.
언급URL : https://stackoverflow.com/questions/3427872/whats-the-difference-between-and-in-bash
'programing' 카테고리의 다른 글
레일 4 LIKE 쿼리 - ActiveRecord가 인용문을 추가합니다. (0) | 2023.05.07 |
---|---|
Swift의 전역 상수 파일 (0) | 2023.05.07 |
pyMongo를 사용하여 ISO 날짜 만들기 (0) | 2023.05.02 |
이클립스에서 "Debug Perspective로 자동 전환" 모드를 해제하려면 어떻게 해야 합니까? (0) | 2023.05.02 |
프로비저닝 프로파일을 생성하지 못했습니다. (0) | 2023.05.02 |