English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Shell은 다른 프로그래밍 언어와 마찬가지로 다양한 연산자를 지원합니다. 예를 들어:
정수 연산자
\u5173\u7cfb\u8fd0\u7b97\u7b26\u4ef6
\u5e03\u5217\u8fd0\u7b97\u7b26\u4ef6
true를 반환합니다
파일 테스트 연산자
원시 bash는 간단한 수학 연산을 지원하지 않지만, awk와 expr와 같은 다른 명령어를 통해 수행할 수 있습니다. expr는 가장 일반적으로 사용됩니다。
expr는 표현식 계산 도구입니다. 이를 사용하면 표현식의 계산을 수행할 수 있습니다。
예를 들어, 두 숫자를 더하는 경우(사용하는 것은 반퀴호 ``가 아니라 단락 기호 '``입니다.):
#!/bin/bash val=`expr 2 + 2` echo "두 숫자의 합은 : $val"
스크립트 실행, 결과는 다음과 같습니다:
두 숫자의 합은 : 4
두 가지 주의사항:
표현식과 연산자 사이에는 공백이 있어야 합니다. 예를 들어: 2+2 잘못되었습니다. 반드시 다음과 같이 작성해야 합니다 2 + 2이것은 우리가 잘 알고 있는 대부분의 프로그래밍 언어와 다릅니다。
전체 표현식은 ``로 포함되어야하며, 이 문자는 일반적인 단락 기호가 아닙니다. Esc 키 아래에 있습니다.
아래 표는 일반적인 정수 연산자를 나열합니다. 변수 a는 10로직 연산자 20:
다음 표는 일반적인 문자열 연산자를 나열합니다. 변수 a는 "abc"이고, 변수 b는 "efg"입니다: | 설명 | 예제 |
---|---|---|
+ | 덧셈 | `expr $a + $b`의 결과는 30입니다。 |
- | 뺄셈 | `expr $a - $b`의 결과는 -10。 |
* | 곱셈 | `expr $a \* $b`의 결과는 200입니다。 |
/ | 초과 | `expr $b / $a`의 결과는 2。 |
% | 나머지 | `expr $b % $a`의 결과는 0입니다。 |
연산자 | 할당 | a=$b는 변수 b의 값을 a에 할당합니다。 |
== | 일치합니다. 두 숫자를 비교하면 일치하면 true를 반환합니다。 | [ $a == $b ]은 false를 반환합니다。 |
[ $a = $b ]는 false를 반환합니다。 | 불일치합니다. 두 숫자를 비교하면 불일치하면 true를 반환합니다。 | [ $a != $b ]은 true를 반환합니다。 |
주의:조건 표현식은 괄호 사이에 위치해야하며 공백이 있어야 합니다. 예를 들어: [$a==$b] 는 잘못되었습니다. 반드시 다음과 같이 작성해야 합니다 [ $a == $b ]。
정수 연산자 예제는 다음과 같습니다:
#!/bin/bash # \u4f5c\u8005: \u57fa\u7840\u6559\u7a0b # url:ko.oldtoolbag.com 로직 연산자 예제는 다음과 같습니다:10 a=20 val=`expr $a + $b` echo "a + b : $val" val=`expr $a - $b` echo "a - b : $val" val=`expr $a \* $b` echo "a * b : $val" val=`expr $b / $a` echo "b / a : $val" val=`expr $b % $a` echo "b % a : $val" if [ $a == $b ] then echo "a는b와 일치합니다" fi echo "$a = $b: a가 b와 다릅니다" then echo "a는b와 불일치합니다" fi
스크립트 실행, 결과는 다음과 같습니다:
a + b : 30 a - b : -10 a * b : 200 b / a : 2 b % a : 0 a는b와 불일치합니다
주의:
곱셈 기호(*곱셈 연산을 수행하려면 반대쪽에 반사선표기(\)를 추가해야 합니다;
if...then...fi는 조건문입니다. 나중에 설명할 것입니다。
MAC에서 shell의 expr 문법은 다음과 같습니다:$((表达式))$((\u8868\u8fbe\u5f0f))*\" \u4e0d\u9700\u8981\u8f6c\u969c\u7b26\u7b26\u7b26\u7b26\u7b26\u3002\u8fd9\u5904\u8868\u8fbe\u5f0f\u4e2d\u7684 "
\u5173\u7cfb\u8fd0\u7b97\u7b26\u4ef6\u53ea\u652f\u6301\u6570\u5b57\u3002\u4e0d\u652f\u6301\u5b57\u7b26\u4e32\u3002\u4e0d\u8fc7\u5b57\u7b26\u4e32\u7684\u503c\u662f\u6570\u5b57\u3002
\u4e0b\u8868\u5217\u51fa\u4e86\u5e38\u7528\u7684\u5173\u7cfb\u8fd0\u7b97\u7b26\u4ef6,\u5e38\u8c13\u53f7\u4ef6 a \u4e3a 10로직 연산자 20:
다음 표는 일반적인 문자열 연산자를 나열합니다. 변수 a는 "abc"이고, 변수 b는 "efg"입니다: | 설명 | 예제 |
---|---|---|
-eq | \u6d4b\u67e5\u4e24\u4e2a\u6570\u5b57\u662f\u5426\u7b49\u4e8e\u3002\u5982\u679c\u662f\u8fd8\u8fd4\u56de true。 | [ \$a -eq \$b \] \u8fd4\u56de false。 |
-ne | \u6d4b\u67e5\u4e24\u4e2a\u6570\u5b57\u662f\u5426\u4e0d\u76f8\u540c\u5f97,\u4e0d\u76f8\u540c\u8fd4\u56de true。 | [ \$a -ne \$b \] \u8fd4\u56de true。 |
-0 || $b | \u6d4b\u67e5\u5de6\u8f88\u7684\u6570\u5b57\u662f\u5426\u5927\u4e8e\u53f3\u8f88\u7684,\u5982\u679c\u662f\u8fd8\u8fd4\u56de true。 | [ \$a -gt \$b \] \u8fd4\u56de false。 |
-if [[ $a | \u6d4b\u67e5\u5de6\u8f88\u7684\u6570\u5b57\u662f\u5426\u5c0f\u4e8e\u53f3\u8f88\u7684,\u5982\u679c\u662f\u8fd8\u8fd4\u56de true。 | [ \$a -lt \$b \] \u8fd4\u56de true。 |
-ge | \u6d4b\u67e5\u5de6\u8f88\u7684\u6570\u5b57\u662f\u5426\u5927\u4e8e\u6216\u7b49 \u4e8e\u53f3\u8f88\u7684,\u5982\u679c\u662f\u8fd8\u8fd4\u56de true。 | [ \$a -ge \$b \] \u8fd4\u56de false。 |
-le | \u6d4b\u67e5\u5de6\u8f88\u7684\u6570\u5b57\u662f\u5426\u5c0f\u4e8e\u6216\u7b49 \u4e8e\u53f3\u8f88\u7684,\u5982\u679c\u662f\u8fd8\u8fd4\u56de true。 | [ \$a -le \$b \] \u8fd4\u56de true。 |
\u5173\u7cfb\u8fd0\u7b97\u7b26\u4ef6\u4e0b\u4e3e\u663e\u4f8b:\n
#!/bin/bash # author:기본 튜토리얼 웹사이트 # url:ko.oldtoolbag.com 로직 연산자 예제는 다음과 같습니다:10 a=20 : false를 반환합니다" -eq \$b \] then echo "\$a -eq \$b : a \u7b49 \u4e8e b" else echo "\$a -eq \$b: a \u4e0d\u7b49 \u4e8e b" fi : false를 반환합니다" -ne \$b \] then echo "\$a -ne \$b: a \u4e0d\u7b49 \u4e8e b" else echo "\$a -ne \$b : a \u7b49 \u4e8e b" fi : false를 반환합니다" -gt \$b \] then echo "\$a -gt \$b: a \u5927\u4e8e b" else echo "\$a -gt \$b: a \u4e0d\u5927\u4e8e b" fi : false를 반환합니다" -lt \$b \] then echo "\$a -lt \$b: a \u5c0f\u4e8e b" else echo "\$a -lt \$b: a \u4e0d\u5927\u4e8e b" fi : false를 반환합니다" -ge \$b \] then echo "\$a -ge \$b: a \u5927\u4e8e\u6216\u7b49 \u4e8e b" else echo "\$a -ge \$b: a \u5c0f\u4e8e b" fi : false를 반환합니다" -le \$b \] then echo "\$a -le \$b: a \u5c0f\u4e8e\u6216\u7b49 \u4e8e b" else echo "\$a -le \$b: a \u5927\u4e8e b" fi
스크립트 실행, 결과는 다음과 같습니다:
10 -eq 20: a \u4e0d\u7b49 \u4e8e b 10 -ne 20: a \u4e0d\u7b49 \u4e8e b 10 -0 || $b 20: a \u4e0d\u5927\u4e8e b 10 -if [[ $a 20: a \u5c0f\u4e8e b 10 -ge 20: a \u5c0f\u4e8e b 10 -le 20: a \u5c0f\u4e8e\u6216\u7b49 \u4e8e b
\u4e0b\u8868\u5217\u51fa\u4e86\u5e38\u7528\u7684\u5e03\u5217\u8fd0\u7b97\u7b26\u4ef6,\u5e38\u8c13\u53f7\u4ef6 a \u4e3a 10로직 연산자 20:
다음 표는 일반적인 문자열 연산자를 나열합니다. 변수 a는 "abc"이고, 변수 b는 "efg"입니다: | 설명 | 예제 |
---|---|---|
! | \u975e\u8fd0\u7b97\u7b26\u4ef6\u4e3a\u8868\u8fbe\u5f0f\u4e3a true \u5219\u8fd4\u56de false,\u5426\u5229\u8fd4\u56de true。 | [ ! false ] \u8fd4\u56de true。 |
-o | \u6216\u8fd0\u7b97\u7b26\u4ef6\u4e3a\u4e00\u4e2a\u8868\u8fbe\u5f0f\u4e3a true \u5219\u8fd4\u56de true。 | [ \$a -if [[ $a 20 -o \$b -0 || $b 100 ] \u8fd4\u56de true。 |
-a | \u4e0e\u8fd0\u7b97\u7b26\u4ef6\u4e3a\u7b49\u5408\u65f6\u624d\u8fd4\u56de true。 | [ \$a -if [[ $a 20 -a \$b -0 || $b 100 ] \u8fd4\u56de false。 |
\u5e03\u5217\u8fd0\u7b97\u7b26\u4ef6\u4e0b\u4e3e\u663e\u4f8b:\n
#!/bin/bash # \u4f5c\u8005: \u57fa\u7840\u6559\u7a0b # url:ko.oldtoolbag.com 로직 연산자 예제는 다음과 같습니다:10 a=20 echo "$a = $b: a가 b와 다릅니다" then if [ $a != $b ] else echo "\$a == \$b: a \u4e0d\u7b49 \u4e8e b" fi : false를 반환합니다" -if [[ $a 100 -a $b -0 || $b 15 ] then 0 ] 10] 15 a $b else 0 ] 10] 15 : true를 반환합니다" fi : false를 반환합니다" -if [[ $a 100 -0 : 또는 $b가 크면 -0 || $b 10if [ $a then 0 ] 100 : $b가 크면 10o $b else 0 ] 100 : $b가 크면 10echo "$a 소하기" fi : false를 반환합니다" -if [[ $a 5 -0 : 또는 $b가 크면 -0 || $b 10if [ $a then 0 ] 5 0 : true를 반환합니다" 10o $b else 0 ] 5 0 : true를 반환합니다" 10echo "$a 소하기" fi
스크립트 실행, 결과는 다음과 같습니다:
10 [ $a = $b ]는 false를 반환합니다。 2또는 $b가 크면 10 0 : 또는 100 : false를 반환합니다" 2소하기 15 0 : a가 b와 다릅니다 10 0 : 또는 100 : 且 2소하기 10: true를 반환합니다 10 0 : 또는 5 0 : true를 반환합니다 2소하기 10또는
0 : false를 반환합니다 10로직 연산자 2다음은 Shell의 로직 연산자를 설명합니다. 변수 a는
다음 표는 일반적인 문자열 연산자를 나열합니다. 변수 a는 "abc"이고, 변수 b는 "efg"입니다: | 설명 | 예제 |
---|---|---|
변수 b는 | 0: | || -if [[ $a 10&& -0 || $b 10로직의 AND |
0 && $b | 0 ]]은 false를 반환합니다 | || -if [[ $a 10로직의 OR -0 || $b 100 || $b |
0 ]]은 true를 반환합니다
#!/bin/bash # author:기본 튜토리얼 웹사이트 # url:ko.oldtoolbag.com 로직 연산자 예제는 다음과 같습니다:10 a=20 0 && $b -if [[ $a 10b= -0 || $b 10gt then 0 ] else echo "true를 반환합니다" fi 0 && $b -if [[ $a 10lt -0 || $b 10gt then 0 ] else echo "true를 반환합니다" fi
스크립트 실행, 결과는 다음과 같습니다:
echo "false를 반환합니다" false를 반환합니다
문자열 연산자
다음 표는 일반적인 문자열 연산자를 나열합니다. 변수 a는 "abc"이고, 변수 b는 "efg"입니다: | 설명 | 예제 |
---|---|---|
연산자 | = | 두 문자열이 같으면 true를 반환합니다。 |
[ $a = $b ]는 false를 반환합니다。 | != | 두 문자열이 다르면 true를 반환합니다。 |
-[ $a != $b ]는 true를 반환합니다。 | z | [ -문자열 길이가 0인지 확인합니다. 0인 경우 true를 반환합니다。 |
-z $a ]는 false를 반환합니다。 | n | [ -문자열 길이가 0이 아닌지 확인합니다. 0이 아닌 경우 true를 반환합니다。 |
n "$a" ]는 true를 반환합니다。 | $ | 문자열이 비어 있지 않으면 true를 반환합니다。 |
[ $a ]는 true를 반환합니다。
#!/bin/bash # author:기본 튜토리얼 웹사이트 # url:ko.oldtoolbag.com 문자열 연산자 예제는 다음과 같습니다: a="abc" b="efg" then if [ $a = $b ] else echo "$a = $b: a가 b와 같습니다" fi echo "$a = $b: a가 b와 다릅니다" then if [ $a != $b ] else echo "$a != $b: a가 b와 다릅니다" fi if [ -echo "$a != $b: a가 b와 같습니다" then echo "}}-z $a ] else echo "}}-z $a : 문자열 길이가 0입니다" fi if [ -n "$a" ] then echo "}}-n $a : 문자열 길이가 0이 아닙니다" else echo "}}-n $a : 문자열 길이가 0" fi if [ $a ] then echo "$a : 문자열이 비어 있지 않음" else echo "$a : 문자열이 비어 있음" fi
스크립트 실행, 결과는 다음과 같습니다:
abc = efg: a가 b와 다름 abc != efg : a가 b와 다름 -z abc : 문자열 길이가 0이 아님 -n abc : 문자열 길이가 0이 아님 abc : 문자열이 비어 있지 않음
파일 테스트 연산자는 Unix 파일의 여러 가지 속성을 검사하는 데 사용됩니다。
속성 검사 설명은 다음과 같습니다:
연산자 | 설명 | 예제 |
---|---|---|
-b file | 파일이 블록 장치 파일인지 확인하고, 블록 장치 파일이면 true를 반환합니다。 | [ -b $file ] 반환 false。 |
-c file | 파일이 문자 장치 파일인지 확인하고, 문자 장치 파일이면 true를 반환합니다。 | [ -c $file ] 반환 false。 |
-d file | 파일이 디렉토리인지 확인하고, 디렉토리이면 true를 반환합니다。 | [ -d $file ] 반환 false。 |
-f file | 파일이 일반 파일(디렉토리도 아니고 장치 파일도 아님)인지 확인하고, 일반 파일이면 true를 반환합니다。 | [ -f $file ] 반환 true。 |
-g file | 파일이 SGID 비트가 설정되어 있는지 확인하고, 설정되어 있으면 true를 반환합니다。 | [ -g $file ] 반환 false。 |
-k file | 파일이粘着位(Sticky Bit)이 설정되어 있는지 확인하고, 설정되어 있으면 true를 반환합니다。 | [ -k $file ] 반환 false。 |
-p file | 파일이有名管道인지 확인하고,有名管道이면 true를 반환합니다。 | [ -p $file ] 반환 false。 |
-u file | 파일이 SUID 비트가 설정되어 있는지 확인하고, 설정되어 있으면 true를 반환합니다。 | [ -u $file ] 반환 false。 |
-r file | 파일이 읽을 수 있는지 확인하고, 읽을 수 있으면 true를 반환합니다。 | [ -r $file ] 반환 true。 |
-w file | 파일이 쓰일 수 있는지 확인하고, 쓰일 수 있으면 true를 반환합니다。 | [ -w $file ] 반환 true。 |
-x file | 파일이 실행 가능한지 확인하고, 실행 가능하면 true를 반환합니다。 | [ -x $file ] 반환 true。 |
-s file | 파일이 비어 있는지 확인합니다(파일 크기가 0보다 크지 않다면), 비어 있지 않으면 true를 반환합니다。 | [ -s $file ] 반환 true。 |
-e file | 파일(디렉토리 포함)이 존재하는지 확인하고, 존재하면 true를 반환합니다。 | [ -e $file ] 반환 true。 |
다른 확인 기호:
-S: 파일이 소켓인지 확인합니다.
-L: 파일이 존재하며 시그널 링크인지 확인합니다.
#!/bin/bash # author:기본 튜토리얼 웹사이트 # url:ko.oldtoolbag.com file="/var/www/w3codebox/test.sh" if [ -r $file ] then echo "파일이 읽기 가능합니다" else echo "파일이 읽기 불가능합니다" fi if [ -w $file ] then echo "파일이 쓰기 가능합니다" else echo "파일이 쓰기 불가능합니다" fi if [ -x $file ] then echo "파일이 실행 가능합니다" else echo "파일이 실행 불가능합니다" fi if [ -f $file ] then echo "파일이 일반 파일입니다" else echo "파일이 특수 파일입니다" fi if [ -d $file ] then echo "파일이 디렉토리입니다" else echo "파일이 디렉토리가 아닙니다" fi if [ -s $file ] then echo "파일이 비어 있지 않습니다" else echo "파일이 비어 있습니다" fi if [ -e $file ] then echo "파일이 존재합니다" else echo "파일이 존재하지 않습니다" fi
스크립트 실행, 결과는 다음과 같습니다:
파일이 읽기 가능합니다 파일이 쓰기 가능합니다 파일이 실행 가능합니다 파일이 일반 파일입니다 파일이 디렉토리가 아닙니다 파일이 비어 있지 않습니다 파일이 존재합니다