Biến cơ bản trong Bash

Nhập môn Bash Scripting

Alex Scriven

Data Scientist

Gán biến

Tương tự các ngôn ngữ khác, bạn gán biến bằng dấu bằng.

var1="Moon"

Sau đó tham chiếu bằng ký hiệu $.

echo $var1
Moon
Nhập môn Bash Scripting

Gán biến chuỗi

Đặt tên biến tùy ý (nhưng hợp lý):

firstname='Cynthia'
lastname='Liu'

echo "Hi there" $firstname $lastname
Hi there Cynthia Liu

Cả hai biến đều được in ra — tốt!

Nhập môn Bash Scripting

Thiếu ký hiệu $

Nếu thiếu ký hiệu $ — đó không phải biến!

firstname='Cynthia'
lastname='Liu'
echo "Hi there " firstname lastname
Hi there firstname lastname
Nhập môn Bash Scripting

(Không) gán biến

Bash rất khắt khe với khoảng trắng khi tạo biến. Tránh chèn khoảng trắng!

var1 = "Moon"
echo $var1
script.sh: line 3: var1: command not found
Nhập môn Bash Scripting

Nháy đơn, nháy kép, backticks

Trong Bash, dấu ngoặc kép khác nhau mang ý nghĩa khác nhau. Cả khi tạo biến và in.

  • Dấu nháy đơn ('sometext') = Shell hiểu nguyên văn nội dung bên trong
  • Dấu nháy kép ("sometext") = Shell hiểu nguyên văn, trừ ký hiệu $ và backticks

Cách cuối tạo “shell trong shell”, như dưới đây. Hữu ích để gọi chương trình dòng lệnh. Dùng backticks.

  • Backticks (`sometext`) = Shell chạy lệnh và ghi STDOUT vào biến
Nhập môn Bash Scripting

Tạo biến khác nhau

Hãy xem hiệu ứng của các cách tạo biến khác nhau

now_var='NOW'

now_var_singlequote='$now_var' echo $now_var_singlequote
$now_var
now_var_doublequote="$now_var"
echo $now_var_doublequote
NOW
Nhập môn Bash Scripting

Chương trình date

Chương trình date sẽ hữu ích để minh họa backticks

Kết quả bình thường của chương trình:

date
Mon  2 Dec 2019 14:07:10 AEDT
Nhập môn Bash Scripting

Shell trong shell

Giờ hãy dùng shell lồng trong shell:

rightnow_doublequote="The date is `date`."
echo $rightnow_doublequote
The date is Mon 2 Dec 2019 14:13:35 AEDT.

Chương trình date được gọi, output được bắt và chèn ngay trong lệnh echo.

Chúng ta đã dùng một shell trong một shell!

Nhập môn Bash Scripting

Ngoặc tròn vs backticks

Có một cách tương đương với backticks:

rightnow_doublequote="The date is `date`."
rightnow_parentheses="The date is $(date)."
echo $rightnow_doublequote
echo $rightnow_parentheses
The date is Mon 2 Dec 2019 14:54:34 AEDT.
The date is Mon 2 Dec 2019 14:54:34 AEDT.

Cả hai hoạt động như nhau, nhưng backticks là kiểu cũ. Dấu ngoặc tròn được dùng nhiều hơn hiện nay. (Xem http://mywiki.wooledge.org/BashFAQ/082)

Nhập môn Bash Scripting

Ayo berlatih!

Nhập môn Bash Scripting

Preparing Video For Download...