ผู้ประกอบการขั้นพื้นฐานเชลล์
เชลล์และการเขียนโปรแกรมภาษาอื่น ๆ ที่สนับสนุนความหลากหลายของผู้ประกอบการรวมไปถึง:
- ดำเนินการทางคณิตศาสตร์
- ผู้ประกอบการเชิงสัมพันธ์
- ผู้ประกอบการบูลี
- ผู้ประกอบการสตริง
- ยื่นประกอบการทดสอบ
ทุบตีพื้นเมืองไม่สนับสนุนการดำเนินการทางคณิตศาสตร์ที่เรียบง่าย แต่สามารถทำได้โดยคำสั่งอื่น ๆ เช่น awk และ expr, expr ใช้กันมากที่สุด
expr เป็นเครื่องมือการคำนวณการแสดงออกใช้มันเพื่อให้การดำเนินการประเมินการแสดงออก
ยกตัวอย่างเช่นการเพิ่มตัวเลขสอง (หมายเหตุการใช้งานของ `ต่อต้านคำพูดเครื่องหมายแทนเครื่องหมายคำพูดเดียว '):
#!/bin/bash val=`expr 2 + 2` echo "两数之和为 : $val"
รันสคริปต์เอาท์พุทจะเป็นดังนี้:
两数之和为 : 4
สองสิ่งที่ควรทราบ:
- ระหว่างการแสดงออกและผู้ประกอบการจะต้องมีพื้นที่ตัวอย่างเช่น 2 + 2 เป็นสิ่งที่ผิดคุณต้องเขียน 2 + 2 ซึ่งเรามีความคุ้นเคยกับภาษาโปรแกรมส่วนใหญ่จะไม่เหมือนกัน
- การแสดงออกที่สมบูรณ์แบบที่จะมี `` ทราบว่าตัวละครตัวนี้ไม่นิยมใช้ในเครื่องหมายคำพูดเดียวด้านล่างปุ่ม Esc
ดำเนินการทางคณิตศาสตร์
ตารางต่อไปนี้แสดงรายการตัวดำเนินการทางคณิตศาสตร์ที่พบบ่อยสมมติตัวแปร 10 ตัวแปร B คือ 20:
ผู้ประกอบการ | คำอธิบาย | ตัวอย่าง |
---|---|---|
+ | การเพิ่ม | `Expr $ A + $ b` ผลคือ 30 |
- | การลบ | `Expr $ a - $ b` ผลเป็น -10 |
* * * * | การคูณ | `Expr $ a \ * ผล $ b` 200 |
/ | หมวด | `Expr $ / ผล a` $ B คือ 2 |
% | เหลือ | `Expr $ B% ผล a` $ คือ 0 |
= | การมอบหมาย | A = B $ b ตัวแปรจะกำหนดมูลค่าของการให้ |
== | เท่ากัน ใช้ในการเปรียบเทียบตัวเลขสองกลับเดียวกันจริง | [$ A $ == b] กลับเท็จ |
! = | ไม่เท่ากัน ใช้ในการเปรียบเทียบตัวเลขสองไม่ได้ผลตอบแทนที่เดียวกันจริง | [$ A! = $ B] ผลตอบแทนจริง |
หมายเหตุ: นิพจน์เงื่อนไขควรอยู่ระหว่างวงเล็บและรวมถึงพื้นที่ตัวอย่างเช่น:[$ a $ == b] เป็นสิ่งที่ผิดและจะต้องเขียนเป็น[$ a $ == b]
ตัวอย่าง
ตัวอย่างดำเนินการทางคณิตศาสตร์มีรายละเอียดดังนี้
#!/bin/bash # author:本教程 # url:www.w3big.com a=10 b=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 if [ $a != $b ] then echo "a 不等于 b" fi
รันสคริปต์เอาท์พุทจะเป็นดังนี้:
a + b : 30 a - b : -10 a * b : 200 b / a : 2 b % a : 0 a 不等于 b
หมายเหตุ:
- เครื่องหมายคูณ (*) จะต้องเพิ่มในด้านหน้าของเครื่องหมาย (\) เพื่อให้บรรลุคูณ;
- ถ้า ... แล้ว ... Fi เป็นงบเงื่อนไขการติดตามจะได้รับการคุ้มครอง
- ในกะลา MAC ของไวยากรณ์ expr คือ: $ ((expression)) ซึ่งการแสดงออก "*" ต้องหนีสัญลักษณ์ "\".
ผู้ประกอบการเชิงสัมพันธ์
ผู้ประกอบการสัมพันธ์เพียง แต่สนับสนุนดิจิตอลไม่สนับสนุนสตริงเว้นแต่ค่าของสตริงที่เป็นตัวเลข
ตารางต่อไปนี้แสดงผู้ประกอบการเชิงสัมพันธ์ที่ใช้กันทั่วไปสมมติตัวแปร 10 ตัวแปร B คือ 20:
ผู้ประกอบการ | คำอธิบาย | ตัวอย่าง |
---|---|---|
-eq | การตรวจสอบไม่ว่าจะเป็นตัวเลขสองมีค่าเท่ากันเท่ากับผลตอบแทนที่แท้จริง | [$ A $ -eq b] กลับเท็จ |
-ne | การตรวจสอบไม่ว่าจะเป็นตัวเลขสองมีค่าเท่ากันไม่ได้ผลตอบแทนเท่ากันจริง | [$ A $ -ne b] ผลตอบแทนจริง |
-gt | ซ้ายมากกว่าจำนวนที่ตรวจพบในที่เหมาะสมและถ้าเป็นเช่นนั้นก็จะส่งกลับจริง | [$ A $ -gt b] กลับเท็จ |
-lt | การตรวจสอบจำนวนน้อยกว่าด้านขวาของด้านซ้ายและถ้าเป็นเช่นนั้นก็จะส่งกลับจริง | [$ A $ -lt b] ผลตอบแทนจริง |
-GE | การตรวจสอบไม่ว่าจะเป็นจำนวนเท่ากับไปทางขวาของด้านซ้ายของที่มีขนาดใหญ่และถ้าเป็นเช่นนั้นก็จะส่งกลับจริง | [$ A $ -GE b] กลับเท็จ |
เลอ | ไม่ว่าจำนวนของการตรวจสอบน้อยกว่าหรือเท่ากับไปทางขวาไปทางซ้ายถ้ามันเป็นความจริงก็จะส่งกลับ | [$ A $ เลอ b] ผลตอบแทนจริง |
ตัวอย่าง
ตัวอย่างผู้ประกอบการเชิงสัมพันธ์มีดังนี้
#!/bin/bash # author:本教程 # url:www.w3big.com a=10 b=20 if [ $a -eq $b ] then echo "$a -eq $b : a 等于 b" else echo "$a -eq $b: a 不等于 b" fi if [ $a -ne $b ] then echo "$a -ne $b: a 不等于 b" else echo "$a -ne $b : a 等于 b" fi if [ $a -gt $b ] then echo "$a -gt $b: a 大于 b" else echo "$a -gt $b: a 不大于 b" fi if [ $a -lt $b ] then echo "$a -lt $b: a 小于 b" else echo "$a -lt $b: a 不小于 b" fi if [ $a -ge $b ] then echo "$a -ge $b: a 大于或等于 b" else echo "$a -ge $b: a 小于 b" fi if [ $a -le $b ] then echo "$a -le $b: a 小于或等于 b" else echo "$a -le $b: a 大于 b" fi
รันสคริปต์เอาท์พุทจะเป็นดังนี้:
10 -eq 20: a 不等于 b 10 -ne 20: a 不等于 b 10 -gt 20: a 不大于 b 10 -lt 20: a 小于 b 10 -ge 20: a 小于 b 10 -le 20: a 小于或等于 b
ผู้ประกอบการบูลี
ตารางต่อไปนี้แสดงผู้ประกอบการบูลีนที่ใช้กันทั่วไปสมมติตัวแปร 10 ตัวแปร B คือ 20:
ผู้ประกอบการ | คำอธิบาย | ตัวอย่าง |
---|---|---|
! | ที่ไม่ใช่การดำเนินงานการแสดงออกเป็นผลตอบแทนจริงเท็จมิฉะนั้นผลตอบแทนจริง | [! FALSE] ผลตอบแทนจริง |
-o | หรือการดำเนินงานมีการแสดงออกที่จริงผลตอบแทนจริง | [$ A -lt 20 -o $ B -gt 100] ผลตอบแทนจริง |
-a | และการดำเนินงานของทั้งสองสำนวนที่เป็นจริงก่อนที่จะกลับจริง | [$ A -lt 20 -a $ B -gt 100] กลับเท็จ |
ตัวอย่าง
ตัวอย่างผู้ประกอบการบูลีนมีดังนี้
#!/bin/bash # author:本教程 # url:www.w3big.com a=10 b=20 if [ $a != $b ] then echo "$a != $b : a 不等于 b" else echo "$a != $b: a 等于 b" fi if [ $a -lt 100 -a $b -gt 15 ] then echo "$a -lt 100 -a $b -gt 15 : 返回 true" else echo "$a -lt 100 -a $b -gt 15 : 返回 false" fi if [ $a -lt 100 -o $b -gt 100 ] then echo "$a -lt 100 -o $b -gt 100 : 返回 true" else echo "$a -lt 100 -o $b -gt 100 : 返回 false" fi if [ $a -lt 5 -o $b -gt 100 ] then echo "$a -lt 100 -o $b -gt 100 : 返回 true" else echo "$a -lt 100 -o $b -gt 100 : 返回 false" fi
รันสคริปต์เอาท์พุทจะเป็นดังนี้:
10 != 20 : a 不等于 b 10 -lt 100 -a 20 -gt 15 : 返回 true 10 -lt 100 -o 20 -gt 100 : 返回 true 10 -lt 100 -o 20 -gt 100 : 返回 false
ดำเนินการทางตรรกะ
ต่อไปนี้อธิบายผู้ประกอบการเชลล์ตรรกะสมมติตัวแปร 10 ตัวแปร B คือ 20:
ผู้ประกอบการ | คำอธิบาย | ตัวอย่าง |
---|---|---|
&& | ตรรกะและ | [[$ A -lt 100 && $ B -gt 100]] กลับเท็จ |
|| | หรือตรรกะ | [[$ A -lt 100 || $ B -gt 100]] ผลตอบแทนจริง |
ตัวอย่าง
ตัวอย่างของการดำเนินการทางตรรกะมีดังนี้
#!/bin/bash # author:本教程 # url:www.w3big.com a=10 b=20 if [[ $a -lt 100 && $b -gt 100 ]] then echo "返回 true" else echo "返回 false" fi if [[ $a -lt 100 || $b -gt 100 ]] then echo "返回 true" else echo "返回 false" fi
รันสคริปต์เอาท์พุทจะเป็นดังนี้:
返回 false 返回 true
ผู้ประกอบการสตริง
ตารางต่อไปนี้ผู้ประกอบการที่ใช้กันทั่วไปสตริงสันนิษฐานว่าเป็นตัวแปร "ABC" ตัวแปร B คือ "EFG":
ผู้ประกอบการ | คำอธิบาย | ตัวอย่าง |
---|---|---|
= | การตรวจจับสองสายมีค่าเท่ากันเท่ากับผลตอบแทนที่แท้จริง | [$ A = $ b] กลับเท็จ |
! = | ตรวจหาว่าสองสายมีค่าเท่ากันไม่ได้ผลตอบแทนเท่ากันจริง | [$ A! = $ B] ผลตอบแทนจริง |
-z | ตรวจหาว่ามีความยาวสตริงคือ 0 0 ผลตอบแทนที่แท้จริง | [-z $ A] กลับเท็จ |
-n | การตรวจสอบไม่ว่าจะเป็นความยาวสายเป็น 0 ที่ไม่ใช่ศูนย์กลับจริง | [-n $ A] ผลตอบแทนจริง |
STR | การตรวจสอบไม่ว่าจะเป็นสตริงว่างเปล่าไม่ได้กลับมาเปล่าจริง | [$ A] ผลตอบแทนจริง |
ตัวอย่าง
ตัวอย่างสตริงผู้ประกอบการมีรายละเอียดดังนี้
#!/bin/bash # author:本教程 # url:www.w3big.com a="abc" b="efg" if [ $a = $b ] then echo "$a = $b : a 等于 b" else echo "$a = $b: a 不等于 b" fi if [ $a != $b ] then echo "$a != $b : a 不等于 b" else echo "$a != $b: a 等于 b" fi if [ -z $a ] then echo "-z $a : 字符串长度为 0" 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 | การตรวจสอบว่าแฟ้มเป็นแฟ้มอุปกรณ์ป้องกันและถ้าเป็นเช่นนั้นก็จะส่งกลับจริง | [-b $ File] กลับเท็จ |
ไฟล์ -c | การตรวจสอบว่าแฟ้มเป็นแฟ้มอุปกรณ์ตัวอักษรและถ้าเป็นเช่นนั้นก็จะส่งกลับจริง | [-c $ File] กลับเท็จ |
ไฟล์ -d | การตรวจสอบว่าแฟ้มเป็นไดเรกทอรีและถ้าเป็นเช่นนั้นก็จะส่งกลับจริง | [-d $ File] กลับเท็จ |
ไฟล์ -f | การตรวจสอบว่าไฟล์เป็นไฟล์ปกติ (ค่าไดเรกทอรีหรืออุปกรณ์แฟ้ม) และถ้าเป็นเช่นนั้นก็จะส่งกลับจริง | [-f $ File] ผลตอบแทนจริง |
ไฟล์ -G | การตรวจสอบว่าแฟ้มมีบิต SGID และถ้าเป็นเช่นนั้นก็จะส่งกลับจริง | [-G $ File] กลับเท็จ |
ไฟล์ -k | การตรวจสอบว่าแฟ้มมี bit เหนียว (เหนียว bit) และถ้าเป็นเช่นนั้นก็จะส่งกลับจริง | [-k $ File] กลับเท็จ |
ไฟล์ -p | ตรวจหาว่าไฟล์จะถูกไปป์ที่มีชื่อและถ้าเป็นเช่นนั้นก็จะส่งกลับจริง | [-p $ File] กลับเท็จ |
ไฟล์ -u | การตรวจสอบว่าแฟ้มมีบิต SUID และถ้าเป็นเช่นนั้นก็จะส่งกลับจริง | [-u $ File] กลับเท็จ |
ไฟล์ -R | ตรวจพบว่าไฟล์ที่สามารถอ่านได้และถ้าเป็นเช่นนั้นก็จะส่งกลับจริง | [-R $ File] ผลตอบแทนจริง |
ไฟล์ -w | การตรวจสอบว่าไฟล์ที่สามารถเขียนและถ้าเป็นเช่นนั้นก็จะส่งกลับจริง | [-w $ File] ผลตอบแทนจริง |
ไฟล์ -x | การตรวจสอบว่าไฟล์เป็นปฏิบัติการและถ้าเป็นเช่นนั้นก็จะส่งกลับจริง | [-x $ File] ผลตอบแทนจริง |
ไฟล์ -s | การตรวจสอบว่าไฟล์ที่ว่างเปล่า (ขนาดไฟล์ที่มีค่ามากกว่า 0), ไม่ได้กลับมาเปล่าจริง | [-s $ File] ผลตอบแทนจริง |
ไฟล์ -e | ตรวจสอบไฟล์ (รวมถึง directory) อยู่แล้วและถ้าเป็นเช่นนั้นก็จะส่งกลับจริง | [-e $ File] ผลตอบแทนจริง |
ตัวอย่าง
ไฟล์ตัวแปรบ่งชี้ไฟล์ "/var/www/w3big/test.sh" ขนาด 100 ไบต์ด้วยสิทธิ์ rwx รหัสต่อไปนี้จะตรวจสอบคุณลักษณะต่างๆของไฟล์:#!/bin/bash # author:本教程 # url:www.w3big.com file="/var/www/w3big/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
รันสคริปต์เอาท์พุทจะเป็นดังนี้:
文件可读 文件可写 文件可执行 文件为普通文件 文件不是个目录 文件不为空 文件存在