LinuxCommandLine -- [腳本 - 循環(huán)]

while

  • continue
  • break

語(yǔ)法

while [ condition ]; do
    commands
done

例子

# timer.sh 倒計(jì)時(shí)
#-----------------
#!/bin/bash

read -p "Enter an integer: " num


while (( num >= 0 )); do
    clear
    echo "Counter: $num"
    num=$((num - 1))
    sleep 1
done

clear

until

語(yǔ)法

until [ condition ]; do
    commands
done

例子

#!/bin/bash

read -p "Enter an integer: " num

until (( num < 0 )); do
    clear
    echo "Timer: $num"
    num=$((num - 1))
    sleep 1
done

clear

循環(huán)和重定向

重定向 stdin

$ cat data.txt
0 0
2 6
1 5
5 1
4 9
2 5
2 9
3 8
6 3
6 1

$ ./multi.sh
0 x 0 = 0
2 x 6 = 12
1 x 5 = 5
5 x 1 = 5
4 x 9 = 36
2 x 5 = 10
2 x 9 = 18
3 x 8 = 24
6 x 3 = 18
6 x 1 = 6

#multi.sh
#-------------
#!/bin/bash

while read num1 num2; do
    printf "$num1 x $num2 = %s\n" $(($num1 * $num2))
done < data.txt

管道

$ ./file_size.sh
Path: .
total 1.8M

admin.txt                  4.0K
counter.sh                 4.0K
data.txt                   4.0K
django_projects.tar.gz     1.7M
file_size.sh               4.0K
multi.sh                   4.0K
nginx.tar.gz               8.0K
ta_1.txt                   4.0K
task_1.txt                 4.0K
task_2.txt                 4.0K
test                       0
until_counter.sh           4.0K

#!/bin/bash

read -p "Path: " path

ls -sh $path | while read size filename; do
    if [[ $size =~ total ]]; then
        printf "$size $filename\n\n"
        continue
    fi

    printf "%-26s %s\n" $filename $size
done

for

第一種格式

$ for i in $(seq 5); do echo $i; done
1
2
3
4
5

$ for i in {1..5}; do echo $i; done
1
2
3
4
5

第二種格式

$ for ((i=1; i <=5 ; i++)); do echo $i; done
1
2
3
4
5

如果沒(méi)有文件匹配,會(huì)直接顯示通配符

$ ls
file_a  file_b  file_c

$ for file in file_*; do echo $file; done
file_a
file_b
file_c

# 如果沒(méi)有文件匹配,會(huì)直接顯示通配符
$ for file in dir_*; do echo $file; done
dir_*

# 加一個(gè) if 檢查
for file in dir_*; do
  if [ -e "$file" ]; then
    echo $file
  fi
done

打印文件最長(zhǎng)的行

$ cat  ./longest-line.sh
#!/bin/bash

read -e -p "File: " file

if [ -e "$file" ]; then
    longest_line=""
    size=0

    while read line; do
       line_size=$(echo "$line" | wc -c)
        if ((line_size > size)); then
            longest_line="$line"
            size="$line_size"
        fi
    done < $file


    printf "longest line: %s\n" "$longest_line"
    printf "size: %s charater(s)\n" "$size"
else
    echo "ERROR: No sush file - $file" >&2
    exit 1
fi
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀(guān)點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 官網(wǎng) 中文版本 好的網(wǎng)站 Content-type: text/htmlBASH Section: User ...
    不排版閱讀 4,701評(píng)論 0 5
  • .bat腳本基本命令語(yǔ)法 目錄 批處理的常見(jiàn)命令(未列舉的命令還比較多,請(qǐng)查閱幫助信息) 1、REM 和 :: 2...
    慶慶慶慶慶閱讀 8,531評(píng)論 1 19
  • 基礎(chǔ) 頭文件 #!/bin/bash 或者#!/bin/sh #!約定的標(biāo)記,如IOS的Import 執(zhí)行文件時(shí)需...
    ZMJun閱讀 1,318評(píng)論 1 2
  • bash學(xué)習(xí) 參考 Linux bash總結(jié)(一) 基礎(chǔ)部分(適合初學(xué)者學(xué)習(xí)和非初學(xué)者參考)Linux 入門(mén)公開(kāi)課...
    cndaqiang閱讀 830評(píng)論 0 1
  • 在小S的名氣從臺(tái)灣傳播到大陸的過(guò)程中,有一個(gè)絕不能被忽視的浙商,就是十月媽咪的創(chuàng)始人趙浦。作為當(dāng)今中國(guó)最活躍最會(huì)賺...
    i代言官方閱讀 317評(píng)論 0 1

友情鏈接更多精彩內(nèi)容