Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

ตัวดำเนินการพื้นฐานในเชลล์สคริปต์


เชลล์ เป็นอินเทอร์เฟซที่โปรแกรมเมอร์สามารถรันคำสั่งและโต้ตอบกับระบบปฏิบัติการได้โดยตรง เชลล์สคริปต์ กำลังให้คำสั่งที่เชลล์สามารถดำเนินการได้

ในเชลล์ยังมีตัวแปรและตัวดำเนินการที่ใช้เพื่อจัดการกับตัวแปรเหล่านี้ มีโอเปอเรเตอร์พื้นฐาน 5 ตัวในเชลล์สคริปต์

  • ตัวดำเนินการเลขคณิต
  • ตัวดำเนินการเชิงสัมพันธ์
  • ตัวดำเนินการบูลีน
  • ตัวดำเนินการระดับบิต
  • ตัวดำเนินการทดสอบไฟล์

ตัวดำเนินการเลขคณิต

ตัวดำเนินการเลขคณิตในเชลล์สคริปต์ใช้เพื่อดำเนินการคำนวณ/คณิตศาสตร์ทั่วไป มีตัวดำเนินการเลขคณิตที่ถูกต้อง 7 ตัวในเชลล์สคริปต์ -

  • ส่วนเพิ่มเติม (+) ใช้เพื่อเพิ่มตัวถูกดำเนินการสองตัว (ตัวแปร)

  • การลบ (-) ใช้เพื่อลบสองตัวแปร (ตัวถูกดำเนินการ) ในเชลล์สคริปต์

  • การคูณ (*) ใช้เพื่อคูณสองตัวแปร (ตัวถูกดำเนินการ) ในเชลล์สคริปต์

  • ดิวิชั่น (/) ใช้เพื่อแบ่งสองตัวแปร (ตัวถูกดำเนินการ) ในเชลล์สคริปต์

  • โมดูลัส (%) ใช้เพื่อค้นหาส่วนที่เหลือในการแบ่งตัวถูกดำเนินการในเชลล์สคริปต์

  • ตัวดำเนินการเพิ่ม (++) ใช้เพื่อเพิ่มค่าปัจจุบันของตัวดำเนินการ

  • ตัวดำเนินการลดค่า (--) ใช้เพื่อลบออกจากค่าปัจจุบันของตัวดำเนินการ

ตัวอย่าง

เพื่อแสดงการใช้งานตัวดำเนินการเลขคณิตในเชลล์สคริปต์ -

a = 32
b = 23
   add = $((a + b))
   echo sum of a and b is $add
   sub = $((a - b))
   echo Subtraction of a and b is $sub
   mul = $((a * b))
   echo product of a and b is $mul
   div = $((a / b))
   echo division of a and b is $div
mod = $((a % b))
   echo remainder when a is divided b is $mod
((++a))
   echo Increment operator when applied on "a" results into a = $a
((--b))
echo Decrement operator when applied on "b" results into b = $b

ผลลัพธ์

sum of a and b is 55
Subtraction of a and b is 9
product of a and b is 736
division of a and b is 1
remainder when a is divided b is 9
Increment operator when applied on a results into a = 33
Decrement operator when applied on b results into b = 24

ตัวดำเนินการเชิงสัมพันธ์

ตัวดำเนินการเชิงสัมพันธ์ในเชลล์สคริปต์กำหนดความสัมพันธ์ระหว่างตัวถูกดำเนินการ ค่าส่งกลับของสิ่งเหล่านี้เป็นจริงหรือเท็จขึ้นอยู่กับตัวดำเนินการและตัวถูกดำเนินการ ตัวดำเนินการเชิงสัมพันธ์ที่ถูกต้องในเชลล์สคริปต์มี 6 ประเภท -

  • ==โอเปอเรเตอร์ เป็นตัวดำเนินการที่เท่ากับค่าของตัวดำเนินการสองตัว คืนค่า จริง หากค่าเท่ากันและคืนค่าเท็จ มิฉะนั้น

  • !=โอเปอเรเตอร์ เป็นตัวดำเนินการที่เท่ากับค่าของตัวดำเนินการสองตัวและตรวจสอบความไม่เท่าเทียมกัน คืนค่าจริงหากค่าไม่เท่ากันและคืนค่าเท็จมิฉะนั้น

  • <โอเปอเรเตอร์ คือตัวดำเนินการน้อยกว่าเปรียบเทียบค่าของตัวดำเนินการสองตัว หากค่าของตัวถูกดำเนินการแรกน้อยกว่าวินาทีที่หนึ่ง ตัวดำเนินการจะส่งกลับค่า true ไม่เช่นนั้นจะคืนค่าเท็จ

  • <=โอเปอเรเตอร์ น้อยกว่าหรือเท่ากับตัวดำเนินการที่เปรียบเทียบค่าของตัวดำเนินการสองตัว หากค่าของตัวถูกดำเนินการแรกน้อยกว่าหรือเท่ากับวินาทีที่หนึ่ง ตัวดำเนินการจะส่งกลับค่า true ไม่เช่นนั้นจะคืนค่าเท็จ

  • >โอเปอเรเตอร์ คือตัวดำเนินการมากกว่าที่เปรียบเทียบค่าของตัวดำเนินการสองตัว หากค่าของตัวถูกดำเนินการแรกมากกว่าวินาทีที่หนึ่ง ตัวดำเนินการจะส่งกลับค่า true ไม่เช่นนั้นจะคืนค่าเท็จ

  • >=โอเปอเรเตอร์ มากกว่าหรือเท่ากับตัวดำเนินการที่เปรียบเทียบค่าของตัวดำเนินการสองตัว หากค่าของตัวถูกดำเนินการแรกมากกว่าหรือเท่ากับวินาทีที่หนึ่ง ตัวดำเนินการจะส่งกลับค่า true ไม่เช่นนั้นจะคืนค่าเท็จ

ตัวอย่าง

a = 32
b = 67
if(( $a==$b ))
then
   echo a is equal to b.
else
   echo a is not equal to b.
fi
if(( $a!=$b ))
then
   echo a is not equal to b.
else
   echo a is equal to b.
fi
if(( $a<$b ))
then
   echo a is less than b.
else
   echo a is not less than b.
fi

if(( $a<=$b ))
then
   echo a is less than or equal to b.
else
   echo a is not less than or equal to b.
fi
if(( $a>$b ))
then
   echo a is greater than b.
else
   echo a is not greater than b.
fi
if(( $a>=$b ))
then
   echo a is greater than or equal to b.
else
   echo a is not greater than or equal to b.
fi

ผลลัพธ์

a is not equal to b.
a is not equal to b.
a is less than b.
a is less than or equal to b.
a is not greater than b.
a is not greater than or equal to b.

ตัวดำเนินการบูลีน

ตัวดำเนินการบูลีนหรือที่เรียกว่าตัวดำเนินการเชิงตรรกะใช้เพื่อดำเนินการทางตรรกะในเชลล์สคริปต์ ตัวดำเนินการเชิงตรรกะที่ถูกต้องในเชลล์สคริปต์มี 3 ประเภท -

  • ตรรกะและ (&&) คำนวณตรรกะ AND ของค่าที่บูลีน คืนค่า จริง หากตัวถูกดำเนินการทั้งสองเป็นจริง มิฉะนั้น จะเป็นเท็จ

  • ตรรกะหรือ (||) คำนวณการดำเนินการหรือตรรกะของตัวถูกดำเนินการบูลีน คืนค่าเท็จหากตัวถูกดำเนินการทั้งสองเป็นเท็จ มิฉะนั้น จะเป็นจริง

  • ตรรกะไม่เท่ากับ (!) คำนวณการปฏิเสธของโอเปอเรเตอร์เดียวที่ผ่านไป หากค่าของตัวถูกดำเนินการเป็นจริง มันจะคืนค่าเท็จ ไม่เช่นนั้น จะเป็นจริง

ตัวอย่าง

a = true
b = false
if(($a == "true" & $b == "true" ))
then
   echo Both are true.
else
   echo Both are not true.
fi
if(($a == "true" || $b == "true" ))
then
   echo Atleast one of them is true.
else
   echo None of them is true.
fi
if(( ! $a == "true" ))
then
   echo "a" was intially false.
else
   echo "a" was intially true.
fi

ผลลัพธ์

Both are not true.
Atleast one of them is true
a was intially true.

ตัวดำเนินการระดับบิตคือตัวดำเนินการที่ดำเนินการระดับบิตกับตัวแปรบิต ตัวดำเนินการระดับบิตในเชลล์สคริปต์มี 6 ประเภท -

  • ระดับบิตและ (&) คือโอเปอเรเตอร์ที่ทำการดำเนินการไบนารี AND กับบิตของตัวถูกดำเนินการ เช่น แต่ละบิตของตัวแปรแรกจะดำเนินการด้วยบิตของโอเปอเรเตอร์ที่สองตามลำดับ

  • ระดับบิตหรือ (|) คือโอเปอเรเตอร์ที่ทำการดำเนินการ OR แบบไบนารีบนบิตของตัวถูกดำเนินการ เช่น แต่ละบิตของตัวแปรแรกจะถูกดำเนินการด้วยบิตของโอเปอเรเตอร์ตัวที่สองตามลำดับ

  • XOR ระดับบิต (^) คือโอเปอเรเตอร์ที่ทำการดำเนินการ XOR แบบไบนารีบนบิตของตัวถูกดำเนินการ เช่น แต่ละบิตของตัวแปรแรกถูกดำเนินการด้วยบิตของตัวดำเนินการที่สองตามลำดับ

  • ส่วนเติมเต็มระดับบิต (~) คือโอเปอเรเตอร์ที่ดำเนินการ NOT ไบนารีบนบิตของตัวถูกดำเนินการ เช่น แต่ละบิตของตัวแปรแรกทำงานด้วยบิตของโอเปอเรเตอร์ตัวที่สองตามลำดับ

  • เลื่อนซ้ายระดับบิต (<<) เป็นตัวดำเนินการที่เลื่อนบิตของตัวถูกดำเนินการไปทางซ้าย n ครั้งที่ระบุทางด้านขวาของตัวดำเนินการ

  • เลื่อนซ้ายระดับบิต (>>) เป็นตัวดำเนินการที่เลื่อนบิตของตัวถูกดำเนินการไปทางขวา n ครั้งที่ระบุทางด้านขวาของตัวดำเนินการ

ตัวอย่าง

a = 14
b = 67
bitwiseAND=$(( a&b ))

echo Bitwise AND of a and b is $bitwiseAND
bitwiseOR=$(( a|b ))

echo Bitwise OR of a and b is $bitwiseOR
bitwiseXOR=$(( a^b ))

echo Bitwise XOR of a and b is $bitwiseXOR
bitiwiseComplement=$(( ~a ))

echo Bitwise Compliment of a is $bitiwiseComplement
leftshift=$(( a<<1 ))

echo Left Shift of a is $leftshift
rightshift=$(( b>>1 ))

echo Right Shift of b is $rightshift

ผลลัพธ์

Bitwise AND of a and b is 2
Bitwise OR of a and b is 79
Bitwise XOR of a and b is 77
Bitwise Compliment of a is -15
Left Shift of a is 28
Right Shift of b is 33

ตัวดำเนินการทดสอบไฟล์

ตัวดำเนินการทดสอบไฟล์ใช้เพื่อทดสอบคุณสมบัติเฉพาะของไฟล์ ตัวดำเนินการทดสอบไฟล์บางส่วน ได้แก่ :

  • ตัวดำเนินการ -b ใช้เพื่อตรวจสอบว่าไฟล์ที่ระบุเป็นไฟล์บล็อกพิเศษหรือไม่ หากไฟล์นั้นเป็นไฟล์บล็อกพิเศษ ฟังก์ชันจะคืนค่า true ไม่เช่นนั้นจะคืนค่าเท็จ

  • ตัวดำเนินการ -s เป็นตัวดำเนินการที่ใช้ตรวจสอบขนาดของไฟล์ที่กำหนด หากขนาดไฟล์มากกว่า 0 จะคืนค่า true ไม่เช่นนั้นจะคืนค่าเท็จ

  • ตัวดำเนินการ -r เป็นตัวดำเนินการที่ตรวจสอบว่ามีการเข้าถึงเนื้อหาไฟล์ที่อ่านหรือไม่ หากให้สิทธิ์การเข้าถึงแบบอ่านมากกว่าจะส่งกลับค่าจริงหรือเท็จ

  • ตัวดำเนินการ -w เป็นตัวดำเนินการที่ตรวจสอบว่าการเข้าถึงเพื่อเขียนลงในไฟล์ได้รับหรือไม่ หากให้สิทธิ์ในการเขียนมากกว่าจะส่งกลับค่าจริงหรือเท็จ

  • ตัวดำเนินการ -x เป็นโอเปอเรเตอร์ที่ตรวจสอบว่ามีการเข้าถึงเพื่อเรียกใช้ไฟล์หรือไม่ หากให้สิทธิ์เข้าถึงการดำเนินการมากกว่าจะส่งกลับค่าจริงหรือเท็จ