Bài 11 Lập trình mức cơ sở dưới UN
11.2 Lập trình một cấu trúc có điều kiện:
11.2.1 Cấu trúc có điều kiện : a)if then else fi if command1 then command2 else command3 fi Giải thích:
Nếu giá trị trả về sau khi thực hiện command1 là 0 (đúng) thì thực hiện command2,
nếu không thì thực hiện command3 kết thúc
Thí dụ:
if test -f file1
then echo “file exists”
else echo “file does not exist”
fi
Chú thích: không bắt buộc phải dùng else
if [-w file1]
then echo “message” >> file1
fi
b) Cấu trúc lồng (nested)
Ta có thể lồng các cấu trúc điều kiện với nhau. Khi đó:
else if thành elif
Thí dụ:
if test -f file1
then echo “file exists”
elif test -d file1
then echo “file is a directory”
fi
trong trường hợp này fi là chung.
Chú ý: cú pháp sau cũng có thể dùng được:
if then else if
else fi
c) Các toán tử | | và &&
Trong trường hợp điều kiện đơn giản, có thể dùng toán tử hoặc logic ||, hoặc toán tử và logic && để lập trình cấu trúc.
command1 && command2
Nếu command1 được thực hiện tốt, thì thực hiện command2, nếu không thì ra.
command1 || command2
Nếu command1 được thực hiện tốt, thì ra, nếu không, thì thực hiện command2. Chú ý: có thể dùng dấu ngoặc đơn để gộp các lệnh
Thí dụ:
test -d demo && echo “demo is a directory”
test -d demo || echo “demo is not a directory”
(test -d demo && ls -l demo) || echo “demo not ok” 11.2.2 Rẽ nhánh trong phép chọn một trong nhiều giá trị:
Dùng cấu trúc:
case in esac
Cấu trúc trên cho phép chọn một trong nhiều xâu ký tự và thực hiện các lệnh liên quan đến xâu đó. case $variable in string1) cmd1 cmd2 ……… ;; string2) cmd1 cmd2 ……… ;;
string3 | string4) commands
;;
esac
Chú ý: có thể dùng các metacharacter của shell để biểu diễn xâu ký tự,
| có nghĩa là hoặc