Standard streams & arguments

Bash Scripting เบื้องต้น

Alex Scriven

Data Scientist

STDIN-STDOUT-STDERR

ใน Bash scripting มี 'streams' สำหรับโปรแกรม 3 ประเภท:

  • STDIN (standard input) สตรีมข้อมูลที่ เข้า สู่โปรแกรม
  • STDOUT (standard output) สตรีมข้อมูลที่ ออก จากโปรแกรม
  • STDERR (standard error) ข้อผิดพลาดในโปรแกรม

โดยค่าเริ่มต้น สตรีมเหล่านี้จะรับและแสดงผลผ่านเทอร์มินัล

อาจพบ 2> /dev/null ในการเรียกสคริปต์ ซึ่งเป็นการเปลี่ยนทิศทาง STDERR ให้ถูกลบทิ้ง (1> /dev/null จะเป็น STDOUT)

Bash Scripting เบื้องต้น

STDIN-STDOUT แบบภาพ

ภาพด้านล่างแสดง standard streams โดยใช้ pipeline ที่สร้างไว้ก่อนหน้า:

ไดอะแกรม Standard Streams

Bash Scripting เบื้องต้น

ตัวอย่าง STDIN

ลองพิจารณาไฟล์ข้อความ (sports.txt) ที่มีข้อมูล 3 บรรทัด

football
basketball
swimming

คำสั่ง cat sports.txt 1> new_sports.txt เป็นตัวอย่างการนำข้อมูลจากไฟล์แล้วเขียน STDOUT ลงในไฟล์ใหม่ ลองดูผลเมื่อรัน cat new_sports.txt

football
basketball
swimming
Bash Scripting เบื้องต้น

STDIN vs ARGV

แนวคิดสำคัญใน Bash scripting คือ arguments

สคริปต์ Bash รับ arguments มาใช้งานภายในได้ โดยเพิ่มช่องว่างหลังคำสั่งรันสคริปต์

  • ARGV คืออาร์เรย์ของ arguments ทั้งหมดที่ส่งให้โปรแกรม
  • เข้าถึง argument แต่ละตัวได้ด้วยสัญลักษณ์ $ เช่น ตัวแรกคือ $1 ตัวที่สองคือ $2 เป็นต้น
  • $@ และ $* ให้ arguments ทั้งหมดใน ARGV
  • $# ให้จำนวน arguments
Bash Scripting เบื้องต้น

ตัวอย่าง ARGV

ลองดูตัวอย่างสคริปต์ (args.sh):

#!/usr/bash
echo $1
echo $2
echo $@
echo "There are " $# "arguments"
Bash Scripting เบื้องต้น

รันตัวอย่าง ARGV

เมื่อรัน bash args.sh one two three four five

one
two
one two three four five
There are 5 arguments

 

#!/usr/bash
echo $1
echo $2
echo $@
echo "There are " $# "arguments"
Bash Scripting เบื้องต้น

มาฝึกกันเถอะ!

Bash Scripting เบื้องต้น

Preparing Video For Download...