Lấy tuoi trong linux shell

Tiếp tục với chuỗi bài tập cơ bản đối với bài tập lập trình shell script, chúng ta sẽ tiếp tục đến với bài số 11 với nội dung cực kì dễ cho các bạn sinh viên hay newbie đang tập tành lập trình. Bài viết sẽ gồm 3 phần : đề bài, thảo luận cơ bản và code mẫu.

Bạn hãy viết 1 chương trình script cho phép user nhập tên và tuổi của họ vào. Sau đó hãy in ra số năm mà user sẽ đạt độ tuổi 60, 80 và 100 tuổi.

Thảo luận cơ bản

– Nhập input vào biến với “read”.
– Tính toán con số với chương trình ‘expr’. Có thể coi thêm “Bốn cách tính toán trong bash shell script và trên Linux
– Lấy năm hiện tại trừ cho số tuổi, ra năm sinh dự kiến của user và cộng số năm sẽ đạt độ tuổi.

Code mẫu bài tập số 11

#!/bin/bash
# Author : Quach CHi Cuong
# Website: https://cuongquach.com/

read -p "- Ten ban la gi : " NAME
read -p "- Ban bao nhieu tuoi : " AGE

if [ -z "${NAME}" ];then
	echo "- Ban chua nhap ten. Thoat."
	exit 1
fi

if [ -z ${AGE} ];then
	echo "- Ban chua nhap tuoi. Thoat"
	exit 1
elif [ ${AGE} -lt 0 ];then
	echo "- Tuoi cua ban khong the nho hon 0. Thoat"
	exit 1
fi

CURRENT_YEAR="2017"
AGE_100=$(expr ${CURRENT_YEAR} - ${AGE} + 100)
AGE_80=$(expr ${CURRENT_YEAR} - ${AGE} + 80)
AGE_60=$(expr ${CURRENT_YEAR} - ${AGE} + 60)

echo ""
echo "-+ Ban se 60 tuoi vao nam : ${AGE_60}"
echo "-+ Ban se 60 tuoi vao nam : ${AGE_80}"
echo "-+ Ban se 60 tuoi vao nam : ${AGE_100}"

exit 0

 
+ Output chạy chương trình:

# bash baitap-year.sh
- Ten ban la gi : Quach Chi Cuong
- Ban bao nhieu tuoi : 25

-+ Ban se 60 tuoi vao nam : 2052
-+ Ban se 60 tuoi vao nam : 2072
-+ Ban se 60 tuoi vao nam : 2092

 
Như vậy các bạn đã hoàn thành nội dung bài tập lập trình shell số 11 này rồi. Chúc các bạn thành công nhé.

Với bài viết này mình sẽ trình bày “bốn cách tính toán trong bash shell” hay trên Linux thường áp dụng cho các hoạt động code shell script lập trình trên Linux rất nhiều. Mỗi phương thức, công cụ đều sẽ có những cách sử dụng và lưu ý riêng nên các bạn có thể gõ lệnh nhiều vào để quen với cách sử dụng lệnh đó.

Contents

  • Bốn cách tính toán trong bash shell hay trên Linux
    • 1. Expr
    • 2. Let
    • 3. Sử dụng $((expression)) hoặc $[expression]
    • 4. “bc” – An arbitrary precision calculator language”

1. Expr

Kiểu dữ liệu số áp dụng : số nguyên (integer).
Dùng để tính toán đơn giản cộng trừ nhân chia: “+” , “” , “*” , “/” .

Ví dụ 1:

# expr 1 + 1
2
# myvar=$(expr 1 + 1)
# echo ${myvar}
2
# expr $myvar + 1
3
# expr $myvar / 3
1
# expr $myvar \* 3
9

 
Lưu ý :
– Phải chú ý khoảng trắng, tách biệt giữa các số các biến không được để dính liền.

(Sai) : expr 1+1
(Đúng) : expr 1 + 1

– Ở phép toán nhân, các bạn phải thêm dấu “\” trước dấu “*” thì lệnh mới hiểu đó là phép nhân.

(Sai) : expr 3 * 3
(Đúng) : expr 3 \* 3

2. Let

Kiểu dữ liệu số áp dụng : số nguyên (integer) .
Dùng để tính toán đơn giản “+” , “” , “*” , “/” .

Ví dụ 2:

# a=5
# let a+=1
# echo ${a}
6
# let a+1
# echo ${a}
6
# let b=a+5; echo ${b}
11
# let c=a+b; echo ${c}
17
# let d=$b+3; echo ${d}
14

 
Lưu ý :
– Phải sử dụng biến đã quy định trước trong biểu thức tính toán “let“, không áp dụng số rời nhau.

(Sai): let 5+5
(Đúng) : let var=5+5

– Thằng này phải viết các biến số hoặc số dính liền nhau không được tách khoảng trắng như “expr

(Sai) : let a + 1
(Đúng) : let a+1

3. Sử dụng $((expression)) hoặc $[expression]

Kiểu dữ liệu số áp dụng : số nguyên (integer) .
Dùng để tính toán đơn giản “+” , “-” , “*” , “/” .

Ví dụ 3:

# echo $((5+6))
11
# echo $[5+7]
12
# echo $[5+7.5]
bash: 5+7.5: syntax error: invalid arithmetic operator (error token is ".5")
# var=10
# echo ${var}
10
# var=$((var+5))
# echo $var
15
# echo var=$[var+5]
var=20
# echo $[var+5]
20
# echo $var
15
# var=$[var+5]
# echo $var
20
# var2=7
# var=$((var+${var2}))
# echo $var
27

 
Lưu ý:
– Mọi người theo dõi các dòng code trên sẽ thấy các trường hợp sử dụng

4. “bc” – An arbitrary precision calculator language”

Kiểu dữ liệu số sử dụng : integer, float (số nguyên và số thập phân) .
Dùng trong rất nhiều trường hợp không chỉ tính toán cơ bản, công cụ tính toán mạnh mẽ nhất trong shell, nắm tốt nó thì không sợ gì cả. Đây là công cụ bên thứ 3 nên nếu OS không có thì ta cần cài đặt vào gói ‘bc‘.
Các trường hợp ngoài tính toán có thể sử dụng “bc” : đổi số nhị phân – thập phân – thập lục phân, so sánh các số với nhau, tính toán các số thập phân,… và rất nhiều tính năng khác.

Ví dụ 4:

# echo "2 + 3" | bc
5
# bc <<< "3.4+7/8-(5.94*3.14)"
-15.25
# echo "3.4+7/8-(5.94*3.14)" | bc
-15.25
# echo "2/3" | bc
0
# echo "scale=2; 2/3" | bc
.66
# echo "(2/3)+(7/8)" | bc
0
# echo "scale=2;(2/3)+(7/8)" | bc
1.53
# echo "scale=4;(2/3)+(7/8)" | bc
1.5416
# echo "scale=6;(2/3)+(7/8)" | bc
1.541666
# echo "(2/3)+(7/8)" | bc -l
1.54166666666666666666

 
Ok, như vậy ít nhiều bạn cũng đã có thể nắm qua 4 cách để tính toán các con số trong bash shell script và trên Linux rồi. Chúc các bạn thực hành tốt đẹp.