>  기사  >  운영 및 유지보수  >  Linux의 Shell에서 다양한 괄호의 기능과 사용법을 종합적으로 정리

Linux의 Shell에서 다양한 괄호의 기능과 사용법을 종합적으로 정리

齐天大圣
齐天大圣원래의
2020-09-18 16:53:293631검색

셸 프로그래밍을 배울 때 다양한 괄호 사용법이 혼란스러웠습니다. 점차 익숙해지고 축적되면서 마침내 모든 괄호의 사용법을 마스터했습니다. 이제 제가 요약한 내용을 여러분과 공유하고 싶습니다.

참고: 이 문서를 읽기 위한 전제 조건은 이미 bash 및 쉘 프로그래밍의 기초를 갖추고 있다는 것입니다.

단일 괄호 ()

하지만 괄호에는 두 가지 공통 기능이 있습니다: 명령 대체와 배열 초기화

명령 대체

$() 구조를 만나면 쉘 내부의 명령 괄호가 실행되고 결과가 반환됩니다

# tmp=$(date)
# echo $tmp
Fri Sep 18 10:22:30 CST 2020

초기화 배열

# 初始化数组
lnmp=(linux nginx mysql php)

이중 괄호(())

이중 괄호에는 특성이 있다는 것을 기억하세요. 즉, 괄호 안의 내용이 일치해야 한다는 것입니다. C 언어 구문에서는 변수 이름을 사용할 때 $ 기호를 추가할 필요가 없습니다.

이중 괄호는 정수 계산에 더 자주 사용됩니다(소수점은 지원되지 않음). 예: $((3+2))

# echo $((1+3))
4
# n1=3
# echo $((n1+7))
10

C 언어 문법의 연산 확장을 준수하는 한 괄호 안에 쓸 수 있습니다

# echo $((3+4>5 ? 1 :0)) 
1
# echo $((3+4>9 ? 1 :0)) 
0

이때 변수를 다시 할당합니다. 괄호 외부에는 기호를 추가할 수 없습니다

# i=1;((i++));echo $i;
2
# i=1;((i=100));echo $i;
100

이중 괄호 for 루프에서 자주 사용됩니다

for ((i=0;i<5;i++));do echo -n $i;done

단일 대괄호 []

단일 대괄호는 논리적 판단에도 가장 일반적으로 사용됩니다. 배열의 첨자로 사용하고 정규식에서 범위를 나타냅니다.

쉘 스크립트 조건부 판단에 사용:

if [ 1 > 2 ] then
    ……
fi

는 배열 첨자로 사용할 수도 있습니다.

# echo ${lnmp[1]}
nginx

는 정규식에서 범위를 나타내는 데 사용됩니다.

[0-9]  表示数子0-9都行

이중 괄호

단일 괄호와 마찬가지로 이중 괄호도 조건부 판단에 사용되지만 단일 대괄호보다 더 일반적입니다. 예는 다음과 같습니다.

[ a > b ] && [ a > 0 ]或[ a > b -a a > 0 ]
改成双括号
[[ a > b && a > 0 ]]

단일 중괄호 {}

Cure 중괄호 확장. (globbing)은 중괄호로 묶인 파일 이름을 확장합니다. 중괄호 내에서는 공백이 인용되거나 이스케이프되지 않는 한 공백이 허용되지 않습니다.

예를 들어 rm -f {1,2}.txt 명령을 입력하면 1.txt 및 2.txt 파일이 삭제됩니다.

단일 중괄호 안의 ..의 역할

여기서 두 점은 범위를 나타냅니다. 예를 들어

echo {1..10}  #将打印1,2,3,4,5,6,7,8,9,10

중괄호는 코드 블록용 쉘 스크립트에서도 일반적으로 사용됩니다.

첫 번째 외에도 단일 중괄호를 사용하여 변수 내용을 대체 및 삭제하고 변수 내용을 테스트할 수도 있습니다. 우리는 종종 변수가 존재하는지 확인하고 존재하지 않으면 변수에 새 값을 설정합니다.

val=${n1:-test}

위 코드는 변수 n1이 존재하지 않거나 비어 있으면 val 변수의 값이 test로 설정되고, 그렇지 않으면 val의 값이 n1 변수의 값이 된다는 의미입니다

위 내용은 Linux의 Shell에서 다양한 괄호의 기능과 사용법을 종합적으로 정리의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.