成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Bash 基礎知識系列 #8:For、While 和 Until 循環

系統 Linux
在 Bash 基礎知識系列的倒數第二章節,學習 for、while 和 until 循環。

循環是任何編程語言中的一個強大功能。如果你還不知道,循環其實是一種根據某些條件重復代碼的方式。

例如,想象一下你需要打印從 1 到 10 的數字。你可以使用 echo 命令寫十次,但那太原始了。你使用一個循環,在 3 到 4 行代碼內,就能完成。

這是我能想到的最簡單的例子。我將在討論 Bash 循環時,分享一些實際有用的例子。

在 Bash 中有三種類型的循環:

  • for
  • while
  • until

我將在教程中展示所有三種類型的循環。讓我們從最常見的一種開始。

Bash 中的 For 循環

以下是 Bash 中的 for 循環語法:

for arg in LIST; do
    commands
done

這里的 LIST 可能是一個數組或者一個項目列表。括號擴展 也是進行循環的常用手段。

考慮一下我在開始提到的最簡單的場景。讓我們使用 for 循環打印從 1 到 10 的數字:

#!/bin/bash
for num in {1..10}; do
    echo $num
done

如果你運行它,你應該會看到像這樣的輸出:

$ ./for-loop.sh
1
2
3
4
5
6
7
8
9
10

你也可以使用 for num in 1 2 3 4 5 6 7 8 9 10; do ,但是使用括號擴展使得代碼看起來更短且更智能。

{..} 是用于擴展模式的。你使用 {d..h} ,它等同于 d e f g h 。關于括號擴展的更多信息,可以在這篇文章中找到。

在 Bash 中使用括號擴展

?? 如果你熟悉 C 語言編程,你可能會喜歡在 bash 中使用 C 風格的 for 循環:

for ((i = 0 ; i < 10 ; i++)); do echo $i done

讓我們看另一個例子,顯示 Bash 數組 的所有內容:

#!/bin/bash
distros=(Ubuntu Fedora Debian Alpine)
for i in "${distros[@]}"; do
    echo $i
done

如果你運行腳本,它將顯示數組中定義的所有發行版:

Ubuntu
Fedora
Debian
Alpine

Bash 中的 While 循環

while 循環測試一個條件,然后只要條件為真,就繼續循環。

while [ condition ]; do
    commands
done

如果你考慮前一個例子,它可以使用 while 循環進行重寫:

#!/bin/bash
num=1
while [ $num -le 10 ]; do
    echo $num
    num=$(($num+1))
done

如你所見,你首先需要將變量 num 定義為 1,然后在循環體內,你增加 num 的值。只要 num 小于或等于 10,while 循環就會檢查條件并運行腳本。

因此,現在運行腳本將會顯示出和之前 for 循環中看到的完全相同的結果。

1
2
3
4
5
6
7
8
9
10

讓我們看另一個例子。這是一個 Bash 腳本,它接受一個數字作為參數 并顯示該表。

#!/bin/bash
echo "Table for $1 is:"
index=1
while [ $index -le 10 ]; do
    echo $(($1*$index))
    index=$(($index+1))
done

如果你對 $1 的使用感到困惑,它代表傳遞給腳本的第一個參數。更多的細節可以參考這個系列的 第三章。

如果你運行這個腳本,它應該會顯示以下的輸出:

$ ./table.sh 2
Table for 2 is:
2
4
6
8
10
12
14
16
18
20

Bash 中的 Until 循環

這是一個使用較少的循環格式。它的行為和 while 循環類似。這里的區別是,循環運行直到它檢查的條件為真為止。意味著為了在循環中執行代碼,[ ] 中的條件必須為假。

我馬上會解釋一下。讓我們先看一下它的語法。

until [ condition ]; do
    commands
done

現在,如果我要使用相同的示例,即使用 until 循環打印從 1 到 10 的數字,它看起來會是這樣:

#!/bin/bash
num=1
until [ $num -gt 10 ]; do
    echo $num
    num=$(($num+1))
done

區別在于條件;其余部分保持不變。

  • 當變量 num 小于或等于 10 時,while 循環就會運行。[ ] 中的條件必須為真,循環才會執行。
  • 知道變量 num 變得大于 10 時,until 循環才會運行。[ ] 中的條件必須為假,循環才會執行。

這都是做同樣事情的兩種不同方式。while 更受歡迎,因為你會在大多數編程語言中找到類似 while 的循環語法。

??? 練習時間

那是有趣的?,F在是做一些練習的時候了。

練習 1:編寫一個腳本,該腳本接受一個數字作為參數并打印其表格。如果腳本在沒有參數的情況下運行,你的腳本還應顯示一個消息。

預期輸出

$: ./table.sh
You forgot to enter a number
$: ./table.sh 3
3
6
9
12
15
18
21
24
27
30

練習 2 : 編寫一個腳本,列出目錄 /var 中的所有文件。

提示 : 對于循環,使用 /var/* 作為 “列表”。

Bash 基礎知識系列即將結束。作為該系列的最后一章,你將在下周學習在 Bash 腳本中使用函數。敬請期待。

責任編輯:龐桂玉 來源: Linux中國
相關推薦

2023-08-22 21:42:03

Bash函數

2023-07-17 14:29:01

Bash算術運算

2023-08-11 15:46:40

BashIf Else 語句

2023-07-20 15:37:50

Bash數組

2023-07-12 14:13:03

BashLinux

2023-02-25 16:33:12

Luawhile

2023-07-15 18:19:47

Bash參數

2023-07-30 09:50:51

Bash字符串

2022-12-13 12:55:15

Bash循環

2023-06-19 11:30:19

bashshell

2021-08-18 16:09:39

NestJS

2015-08-27 14:50:40

BISSIS

2023-08-31 11:41:08

2009-12-22 14:27:28

Cisco3600

2010-12-14 09:30:12

2020-09-30 09:47:17

架構

2009-04-10 09:35:00

WCDMA基礎無線網絡

2010-07-16 11:22:31

Perl

2011-09-16 10:13:02

Emacs

2023-07-04 07:31:06

MapReduce數據處理編程模型
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 一本岛道一二三不卡区 | 亚洲精品高清视频在线观看 | 免费激情网站 | 国产精品成人久久久久 | 91麻豆蜜桃一区二区三区 | 日本在线视频中文字幕 | 亚洲一区二区av | 欧美亚洲国语精品一区二区 | 欧美日韩在线观看一区二区三区 | 91精品国产高清久久久久久久久 | 国产性网 | 国产一级在线 | 亚洲视频在线一区 | 久久精品一 | 国产精品a免费一区久久电影 | 亚洲综合热 | 综合久久一区 | 日韩网 | 亚洲精品99久久久久久 | 黄免费观看视频 | 国产一区二区三区久久久久久久久 | 最新av中文字幕 | 国产精品日产欧美久久久久 | 欧美精品欧美精品系列 | 成人精品国产免费网站 | 亚洲国产高清高潮精品美女 | 国产精品欧美一区二区三区不卡 | 久久久www成人免费精品张筱雨 | 国产精品99免费视频 | 欧美在线播放一区 | 日本视频一区二区三区 | 国产精品视频一区二区三区不卡 | 中文精品视频 | 欧美在线视频一区二区 | 一区二区日韩 | 亚洲一区二区免费电影 | 精品久久国产老人久久综合 | 亚洲一区二区三区免费在线 | 91国产精品 | 亚洲在线中文字幕 | 午夜一区|