English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Shell 기본 연산자

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

\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

\u5e03\u5217\u8fd0\u7b97\u7b26\u4ef6

\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 : 크게

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를 반환합니다

true를 반환합니다

문자열 연산자

                    다음 표는 일반적인 문자열 연산자를 나열합니다. 변수 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: 파일이 존재하며 시그널 링크인지 확인합니다.

온라인 예제

변수 file은 파일을 나타냅니다 /var/www/w3codebox/test.sh그 크기는 100 바이트, 가지고 있습니다 rwx 권한. 아래의 코드는 파일의 여러 가지 속성을 검사합니다:
#!/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

스크립트 실행, 결과는 다음과 같습니다:

파일이 읽기 가능합니다
파일이 쓰기 가능합니다
파일이 실행 가능합니다
파일이 일반 파일입니다
파일이 디렉토리가 아닙니다
파일이 비어 있지 않습니다
파일이 존재합니다