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. – Nhập input vào biến với “read”. 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
1. ExprKiểu dữ liệu số áp dụng : số
nguyên (integer). 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 (Sai) : 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 2. LetKiểu dữ liệu số áp dụng : số nguyên (integer) . 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 (Sai): let 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 3. Sử dụng $((expression)) hoặc $[expression]Kiểu dữ liệu số áp dụng : số nguyên (integer) . 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 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) . 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 |