programing

[]와 []의 차이점은 무엇입니까?

instargram 2023. 5. 7. 10:56
반응형

[]와 []의 차이점은 무엇입니까?

나는 bashman 페이지를 보았고 그리고.[[조건식을 사용한다고 합니다.그런 다음 조건식 섹션을 살펴보니 다음과 같은 연산자가 나열되어 있습니다.test)[).

그래서 저는 궁금해요, 무엇이 다른지.[그리고.[[ 시서에바?

[[바시의 개선 사항입니다.[bashbash.bash를 대상으로 될 수 있도록 몇 가지 된 기능이 .즐겨찾기는 다음과 같습니다.

  1. 그것은 껍질의 구문적 특징입니다, 그래서 그것은 약간의 특별한 행동을 가지고 있습니다.[없습니다.당신은 더 이상 mad와 같은 변수를 인용할 필요가 없습니다.[[빈 문자열과 공백이 있는 문자열을 보다 직관적으로 처리합니다.예를 들어 다음과 같이[당신은 글을 써야 합니다.

    if [ -f "$file" ]
    

    공백이 있는 빈 문자열 또는 파일 이름을 올바르게 처리합니다.와 함께[[따옴표는 불필요합니다.

    if [[ -f $file ]]
    
  2. 에 구은문기기때문에이능수, 사있습다니할용당이신이것▁you다를 사용할 수 .&&그리고.|| 및 " " "에 대한 입니다.<그리고.>문자열 비교를 위해. [ 명령어이고 일반명작수행수없할습다니이을업로령므이이므로 이 작업을 할 수 .&&,||,<,그리고.>는 명령줄 인수로 일반 명령에 전달되지 않습니다.

  3. 것은훌니다합륭그를 가지고 .=~정규식 일치를 수행하기 위한 연산자입니다.와 함께[당신은 쓸지도 모릅니다.

    if [ "$answer" = y -o "$answer" = yes ]
    

    와 함께[[당신은 이것을 다음과 같이 쓸 수 있습니다.

    if [[ $answer =~ ^y(es)?$ ]]
    

    또한 저장캡그액룹수있다습니세에 수 .BASH_REMATCH를 들어 .예를 들어어입니다.${BASH_REMATCH[1]}위에 전체 "예"를 입력하면 "예"가 됩니다.

  4. 당신은 무료로 글로빙이라고 불리는 패턴 매칭을 받을 수 있습니다.예를 입력하는 방법에 대해 덜 엄격할 수 있습니다.사용자가 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

반응형