Một trong những phép toán số học phổ biến nhất khi viết tập lệnh Bash là tăng và giảm các biến. Điều này thường được sử dụng nhất trong các vòng lặp như một bộ đếm, nhưng nó cũng có thể xảy ra ở những nơi khác trong tập lệnh.

Tăng và Giảm nghĩa là cộng hoặc trừ một giá trị (thường là 1) tương ứng với giá trị của một biến số. Khai triển số học có thể được thực hiện bằng cách sử dụng dấu ngoặc kép ((...)) và $((...)) hoặc bằng lệnh cài sẵn let.

Trong Bash, có nhiều cách để tăng / giảm một biến. Bài viết này giải thích một số trong số chúng.

Sử dụng + và -

Cách đơn giản nhất để tăng / giảm một biến là sử dụng toán tử +và -.

i=$((i+1))
((i=i+1))
let "i=i+1"
i=$((i-1))
((i=i-1))
let "i=i-1"

Dưới đây là một ví dụ về tăng một biến trong until vòng lặp:

Phương pháp này cho phép bạn tăng / giảm biến theo bất kỳ giá trị nào bạn muốn.

i=0

until [ $i -gt 3 ]
do
  echo i: $i
  ((i=i+1))
done

Output:

i: 0
i: 1
i: 2
i: 3

Toán tử += và -=

Ngoài các toán tử cơ bản được giải thích ở trên, bash cũng cung cấp các toán tử gán +=và -=. Các toán tử này được sử dụng để tăng / giảm giá trị của toán hạng bên trái với giá trị được chỉ định sau toán tử.

((i+=1))
let "i+=1" 

Sao chép

((i-=1))
let "i-=1" 

Trong while vòng lặp sau , chúng ta đang giảm giá trị của i xuống 5.

i=20

while [ $i -ge 5 ]
do
  echo Number: $i
  let "i-=5" 
done

Output:

Number: 20
Number: 15
Number: 10
Number: 5

Toán tử  ++ và --

Các toán tử ++ và -- tăng và giảm tương ứng, toán hạng của nó bằng 1 và trả về giá trị.

((i++))
((++i))
let "i++"
let "++i"

Output:

((i--))
((--i))
let "i--"
let "--i"

Các toán tử có thể được sử dụng trước hoặc sau toán hạng. Chúng còn được gọi là:

  • tăng tiền tố: ++i
  • giảm tiền tố: --i
  • gia số hậu tố: i++
  • giảm hậu tố: i--

Các toán tử tiền tố đầu tiên tăng / giảm các toán tử 1và sau đó trả về giá trị mới của các toán tử. Mặt khác, các toán tử postfix trả về giá trị của các toán tử trước khi nó được tăng / giảm.

Nếu bạn chỉ muốn tăng / giảm biến, thì không có sự khác biệt nếu bạn sử dụng toán tử tiền tố hoặc hậu tố. Nó chỉ tạo ra sự khác biệt nếu kết quả của các toán tử được sử dụng trong một số hoạt động khác hoặc được gán cho một biến khác.

Các ví dụ sau đây minh họa cách toán tử ++ hoạt động khi được sử dụng trước và sau tác nhân vận hành của nó:

x=5
y=$((x++))
echo x: $x
echo y: $y

Output:

x: 6
y: 5
x=5
y=$((++x))
echo x: $x
echo y: $y

Output:

x: 6
y: 6

Dưới đây là ví dụ về cách sử dụng mã tăng hậu tố trong tập lệnh bash:

#!/bin/bash
i=0
while true; do
  if [[ "$i" -gt 3 ]]; then
       exit 1
  fi
  echo i: $i
  ((i++))
done

Nhược điểm của việc sử dụng các toán tử này là biến chỉ có thể được tăng hoặc giảm 1.

Phần kết luận

Các biến tăng và giảm trong Bash có thể được thực hiện theo nhiều cách khác nhau. Dù bạn sử dụng phương pháp nào thì kết quả đều giống nhau.

Nếu bạn có bất kỳ câu hỏi hoặc phản hồi nào, hãy để lại bình luận.

0 0 votes
Article Rating
Subscribe
Notify of
guest
0 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments