Luồng chuẩn & đối số

Nhập môn Bash Scripting

Alex Scriven

Data Scientist

STDIN-STDOUT-STDERR

Trong Bash, có ba “luồng” cho chương trình:

  • STDIN (standard input). Luồng dữ liệu vào chương trình
  • STDOUT (standard output). Luồng dữ liệu ra khỏi chương trình
  • STDERR (standard error). Lỗi của chương trình

Mặc định, các luồng này đọc/ghi với terminal.

Bạn có thể thấy 2> /dev/null trong lệnh script; chuyển hướng STDERR để xóa. (1> /dev/null là STDOUT)

Nhập môn Bash Scripting

Biểu diễn STDIN-STDOUT

Đây là minh họa luồng chuẩn, dùng pipeline đã tạo trước:

Sơ đồ luồng chuẩn

Nhập môn Bash Scripting

Ví dụ STDIN

Xét tệp văn bản (sports.txt) có 3 dòng dữ liệu.

football
basketball
swimming

Lệnh cat sports.txt 1> new_sports.txt lấy dữ liệu từ tệp và ghi STDOUT ra tệp mới. Hãy chạy cat new_sports.txt để xem kết quả

football
basketball
swimming
Nhập môn Bash Scripting

STDIN vs ARGV

Khái niệm quan trọng trong Bash là đối số

Script Bash nhận đối số bằng cách thêm khoảng trắng sau lệnh gọi script.

  • ARGV là mảng tất cả đối số truyền vào chương trình.
  • Truy cập từng đối số bằng ký hiệu $: cái thứ nhất $1, thứ hai $2, v.v.
  • $@$* trả về tất cả đối số trong ARGV
  • $# trả về số lượng đối số
Nhập môn Bash Scripting

Ví dụ ARGV

Xét ví dụ script (args.sh):

#!/usr/bash
echo $1
echo $2
echo $@
echo "There are " $# "arguments"
Nhập môn Bash Scripting

Chạy ví dụ ARGV

Bây giờ chạy 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"
Nhập môn Bash Scripting

Ayo berlatih!

Nhập môn Bash Scripting

Preparing Video For Download...