Header Ads Widget

Lập trình Shell Script cơ bản

Shell Script là một chương trình máy tính được thiết kế để chạy bởi shell Unix, trình thông dịch dòng lệnh, các phương ngữ khác nhau của tập lệnh shell được coi là ngôn ngữ kịch bản shell bao gồm quản lý file, thực thi chương trình và hiển thị text

Cơ bản

Tạo file test.sh:
#!/bin/bash
echo "Hello World!"
Để có quyền execute cho đoạn script, cần set quyền 755:
chmod 755 test.sh
Chạy file:
./hello_world.sh

 

Biến

Khai báo biến và gọi biến
#!/bin/bash 
TITLE="Hostname: $HOSTNAME" 
DATE_ISO=$(date +"%x %r %Z") 
TIME_STAMP="$RIGHT_NOW by $USER" 
cat <<- _EOF_ 
<html> <head> <title> $TITLE</title> </head> <body> <h1>$DATE_ISO</h1> <p>$TIME_STAMP</p> </body> </html> 
_EOF_

Shell Functions

Khai báo hàm và gọi hàm
Cú pháp: 
TEN_HAM()
{

}

Gọi hàm:

$(TEN_HAM) 

Ví dụ: 

Lệnh uptime sẽ thông báo thời gian chạy kể từ lần cuối re-boot
getUpTime() { 
    echo "<p>Uptime</p>" 
    uptime 
}

Xử lý điều kiện

Cấu trúc của if trong shell script:
if commands; then
  commands
elif commands; then
  commands...
else
  commands
fi
Ví dụ:

if [ -f .bash_profile ]; then
    echo "File ok."
else
    echo "File not ok"
fi
Gõ lệnh: help + TEN_DIEU_KIEN
ExpressionDescription
-d fileTrue khi file là một directory
-e fileTrue khi file tồn tại
-f fileTrue khi file tồn tại và và một file thông thường(không bị hạn chế về permission)
-L fileTrue nếu file là symbolic link
-r fileTrue nếu file có quyền đọc (readable)
-w fileTrue nếu file có quyền ghi (writable)
-x fileTrue nếu file có quyền thực thi (executable)
file1 -nt file2True nếu file 1 mới hơn so với file 2 (dựa vào modification time)
file1 -ot file2True nếu file 1 cũ hơn so với file 2
-z stringTrue nếu string rỗng
-n stringTrue nếu string tồn tại
string1 = string2True nếu 2 string giống nhau
string1 != string2True nếu 2 string khác nhau

Keyboard Input

Để có thể nhập input từ bán phím sử dụng lệnh read sẽ đọc input từ bàn phím và gán vào biến như sau:
#!/bin/bash 
echo -n "Enter some text > " 
read text 
echo "You entered: $text"

Loops

Vòng lặp while
#!/bin/bash

number=0
while [ "$number" -lt 10 ]; do
    echo "Number = $number"
    number=$((number + 1))
done
Cấu trúc for
for variable in words; do
    commands
done

Nhận xét