Nhập môn Bash Scripting
Alex Scriven
Data Scientist
Một câu lệnh IF cơ bản trong Bash có cấu trúc sau:
if [ CONDITION ]; then# SOME CODEelse # SOME OTHER CODEfi
Hai lưu ý:
];Ta có thể so sánh chuỗi cơ bản trong một câu lệnh IF:
x="Queen"if [ $x == "King" ]; thenecho "$x is a King!"else echo "$x is not a King!" fi
Queen is not a King!
Bạn cũng có thể dùng != cho “khác”
IF số học có thể dùng cấu trúc ngoặc tròn kép:
x=10if (($x > 5)); then echo "$x is more than 5!" fi
10 is more than 5!
IF số học cũng có thể dùng ngoặc vuông và cờ số học thay cho (>, <, =, !=…):
-eq là “bằng”-ne là “khác”-lt là “nhỏ hơn”-le là “nhỏ hơn hoặc bằng”-gt là “lớn hơn”-ge là “lớn hơn hoặc bằng”Ta viết lại ví dụ trước bằng ngoặc vuông:
x=10
if [ $x -gt 5 ]; then
echo "$x is more than 5!"
fi
10 is more than 5!
Bash có nhiều cờ liên quan đến tệp như:
-e nếu tệp tồn tại-s nếu tệp tồn tại và có kích thước > 0-r nếu tệp tồn tại và đọc được-w nếu tệp tồn tại và ghi đượcVà nhiều cờ khác:
Để kết hợp điều kiện (AND) hoặc dùng OR trong Bash, dùng các ký hiệu sau:
&& cho AND|| cho ORTrong Bash bạn có thể xâu chuỗi điều kiện như sau:
x=10
if [ $x -gt 5 ] && [ $x -lt 11 ]; then
echo "$x is more than 5 and less than 11!"
fi
Hoặc dùng cú pháp ngoặc vuông kép:
x=10
if [[ $x -gt 5 && $x -lt 11 ]]; then
echo "$x is more than 5 and less than 11!"
fi
Bạn cũng có thể dùng nhiều chương trình dòng lệnh trực tiếp trong điều kiện, loại bỏ ngoặc vuông.
Ví dụ, nếu tệp words.txt chứa 'Hello World!':
if grep -q Hello words.txt; then
echo "Hello is inside!"
fi
Hello is inside!
Bạn cũng có thể gọi một shell bên trong shell cho điều kiện.
Viết lại ví dụ trước; kết quả như nhau.
if $(grep -q Hello words.txt); then
echo "Hello is inside!"
fi
Hello is inside!
Nhập môn Bash Scripting