国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【Shell編程】Linux Shell編程入門:輸入輸出、變量、條件判斷、函數(shù)和運(yùn)算

這篇具有很好參考價(jià)值的文章主要介紹了【Shell編程】Linux Shell編程入門:輸入輸出、變量、條件判斷、函數(shù)和運(yùn)算。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

在Linux操作系統(tǒng)中,Shell編程是一項(xiàng)非常重要的技能。通過Shell編程,我們可以自動(dòng)化執(zhí)行各種任務(wù),提高工作效率。無論是系統(tǒng)管理、數(shù)據(jù)處理還是軟件開發(fā),都離不開Shell腳本的應(yīng)用。本篇博客將帶領(lǐng)大家深入了解Shell編程的基礎(chǔ)知識(shí),包括輸入輸出、變量、條件判斷、函數(shù)和運(yùn)算等部分。通過學(xué)習(xí)這些內(nèi)容,將能夠編寫簡單而強(qiáng)大的Shell腳本,實(shí)現(xiàn)各種自動(dòng)化任務(wù)。無論你是初學(xué)者還是有一定經(jīng)驗(yàn)的開發(fā)者,本篇博客都將為你提供詳細(xì)的解釋和實(shí)例代碼,幫助你快速入門Shell編程。讓我們一起開始這個(gè)有趣而實(shí)用的Shell編程之旅吧!
【Shell編程】Linux Shell編程入門:輸入輸出、變量、條件判斷、函數(shù)和運(yùn)算,操作系統(tǒng),linux,服務(wù)器,運(yùn)維

1. 輸入輸出

1.1 從標(biāo)準(zhǔn)輸入讀取用戶輸入:

#!/bin/bash

echo "請(qǐng)輸入您的名字:"
read name
echo "您好,$name!"

在這個(gè)例子中,使用read命令從標(biāo)準(zhǔn)輸入讀取用戶輸入的名字,并使用echo命令將問候語輸出到標(biāo)準(zhǔn)輸出。

1.2 讀取命令行參數(shù):

#!/bin/bash

echo "第一個(gè)參數(shù)是:$1"
echo "第二個(gè)參數(shù)是:$2"

在這個(gè)例子中,使用$1$2來獲取命令行參數(shù)的值,并使用echo命令將參數(shù)值輸出到標(biāo)準(zhǔn)輸出。

1.3 使用環(huán)境變量:

#!/bin/bash

echo "當(dāng)前用戶的主目錄是:$HOME"
echo "當(dāng)前工作目錄是:$PWD"

在這個(gè)例子中,使用$HOME$PWD來獲取環(huán)境變量的值,并使用echo命令將值輸出到標(biāo)準(zhǔn)輸出。

1.4 從文件中讀取數(shù)據(jù):

#!/bin/bash

while IFS= read -r line
do
  echo "讀取到的行:$line"
done < input.txt

在這個(gè)例子中,使用while循環(huán)和read命令從input.txt文件中逐行讀取數(shù)據(jù),并使用echo命令將每行數(shù)據(jù)輸出到標(biāo)準(zhǔn)輸出。

1.5 將結(jié)果輸出到文件:

#!/bin/bash

echo "這是一行文本" > output.txt

在這個(gè)例子中,使用重定向符號(hào)>將文本輸出到output.txt文件中。

1.6 使用管道連接多個(gè)命令:

#!/bin/bash

ls -l | grep ".txt"

在這個(gè)例子中,使用管道將ls -l命令的輸出作為grep ".txt"命令的輸入,用于過濾出包含.txt的文件。

1.7 將錯(cuò)誤消息輸出到文件:

#!/bin/bash

command_not_exist 2> error.txt

在這個(gè)例子中,使用重定向符號(hào)2>command_not_exist命令的錯(cuò)誤消息輸出到error.txt文件中。

2. 變量

2.1 定義變量:

可以使用=符號(hào)來定義變量,并為其賦值。變量名和賦值之間不能有空格。例如:

name="John"
age=25

2.2 使用變量:

可以通過在變量名前加上$符號(hào)來使用變量的值。例如:

echo "My name is $name and I am $age years old."

2.3 只讀變量:

可以使用readonly命令將變量設(shè)置為只讀,防止其被修改。例如:

readonly name

2.4 刪除變量:

可以使用unset命令刪除變量。例如:

unset age

2.5 特殊變量:

shell編程還提供了一些特殊變量,用于存儲(chǔ)有關(guān)腳本和環(huán)境的信息。例如:

  • $0:當(dāng)前腳本的文件名。
  • $1、$2$3…:命令行參數(shù)的值。
  • $#:命令行參數(shù)的數(shù)量。
  • $*:所有命令行參數(shù)的值。
  • $@:所有命令行參數(shù)的值(作為獨(dú)立的字符串)。
  • $?:上一個(gè)命令的退出狀態(tài)。

下面是一個(gè)簡單的示例代碼,演示了如何定義和使用變量:

#!/bin/bash

name="John"
age=25

echo "My name is $name and I am $age years old."

readonly name

unset age

在這個(gè)例子中,定義了名為nameage的變量,并將其值分別設(shè)置為"John"和25。然后使用echo命令將變量的值輸出到標(biāo)準(zhǔn)輸出。最后,將name變量設(shè)置為只讀,并刪除age變量。

3. 條件判斷

3.1 if語句

  1. 使用if語句進(jìn)行條件判斷:
if [ condition ]
then
    # code block
fi

在這個(gè)語法中,condition是一個(gè)條件表達(dá)式,可以是比較運(yùn)算符、邏輯運(yùn)算符、字符串比較等。如果condition為真,則執(zhí)行then后的代碼塊。

  1. 使用else語句進(jìn)行條件分支:
if [ condition ]
then
    # code block 1
else
    # code block 2
fi

在這個(gè)語法中,如果condition為真,則執(zhí)行then后的代碼塊1,否則執(zhí)行else后的代碼塊2。

  1. 使用elif語句進(jìn)行多個(gè)條件分支:
if [ condition1 ]
then
    # code block 1
elif [ condition2 ]
then
    # code block 2
else
    # code block 3
fi

在這個(gè)語法中,首先判斷condition1,如果為真,則執(zhí)行then后的代碼塊1。如果condition1為假,再判斷condition2,如果為真,則執(zhí)行then后的代碼塊2。如果condition2也為假,則執(zhí)行else后的代碼塊3。

  1. 使用邏輯運(yùn)算符進(jìn)行復(fù)雜的條件判斷:
if [ condition1 ] && [ condition2 ]
then
    # code block
fi

在這個(gè)語法中,&&表示邏輯與運(yùn)算符,如果condition1condition2都為真,則執(zhí)行then后的代碼塊。

下面是一個(gè)簡單的示例代碼,演示了如何使用條件判斷:

#!/bin/bash

age=18

if [ $age -ge 18 ]
then
    echo "You are an adult."
else
    echo "You are not an adult."
fi

在這個(gè)例子中,根據(jù)變量age的值進(jìn)行條件判斷。如果age大于等于18,則輸出"You are an adult.“,否則輸出"You are not an adult.”。

3.2 case語句

  1. case語句:case語句用于根據(jù)不同的模式匹配執(zhí)行不同的代碼塊。以下是case語句的基本語法:
case expression in
    pattern1)
        # code block 1
        ;;
    pattern2)
        # code block 2
        ;;
    pattern3)
        # code block 3
        ;;
    *)
        # default code block
        ;;
esac

在這個(gè)語法中,expression是要匹配的表達(dá)式,pattern1、pattern2等是不同的模式,code block 1code block 2等是對(duì)應(yīng)模式的代碼塊。如果expression匹配到某個(gè)模式,則執(zhí)行對(duì)應(yīng)模式的代碼塊,然后跳出case語句。如果沒有匹配到任何模式,則執(zhí)行default code block。

  1. test命令:test命令用于進(jìn)行條件判斷,并返回一個(gè)退出狀態(tài)。以下是test命令的基本語法:
test condition

在這個(gè)語法中,condition是一個(gè)條件表達(dá)式,可以是比較運(yùn)算符、邏輯運(yùn)算符、字符串比較等。如果condition為真,則test命令返回退出狀態(tài)0,否則返回非零退出狀態(tài)。

test命令也可以使用方括號(hào)[]來進(jìn)行條件判斷,例如[ condition ]。

  1. 數(shù)值比較:可以使用比較運(yùn)算符進(jìn)行數(shù)值比較,例如:
  • -eq:等于
  • -ne:不等于
  • -gt:大于
  • -lt:小于
  • -ge:大于等于
  • -le:小于等于
  1. 字符串比較:可以使用字符串比較運(yùn)算符進(jìn)行字符串比較,例如:
  • =:相等
  • !=:不相等
  • -z:長度為零
  • -n:長度不為零

下面是一個(gè)使用case語句和test命令進(jìn)行條件判斷的示例代碼:

#!/bin/bash

fruit="apple"

case $fruit in
    "apple")
        echo "It's an apple."
        ;;
    "banana")
        echo "It's a banana."
        ;;
    *)
        echo "It's neither an apple nor a banana."
        ;;
esac

if [ $fruit = "apple" ]
then
    echo "It's an apple."
else
    echo "It's not an apple."
fi

在這個(gè)例子中,首先使用case語句根據(jù)變量fruit的值進(jìn)行模式匹配。如果fruit是"apple",則輸出"It’s an apple.“,如果是"banana”,則輸出"It’s a banana.“,否則輸出"It’s neither an apple nor a banana.”。然后使用test命令進(jìn)行條件判斷,如果fruit等于"apple",則輸出"It’s an apple.“,否則輸出"It’s not an apple.”。

4. 運(yùn)算

在shell編程中,可以進(jìn)行各種類型的運(yùn)算,包括數(shù)值運(yùn)算、字符串運(yùn)算和邏輯運(yùn)算。下面是一些常用的運(yùn)算符和運(yùn)算方式:

4.1 數(shù)值運(yùn)算:

可以使用算術(shù)運(yùn)算符進(jìn)行數(shù)值運(yùn)算,例如:

  • +:加法
  • -:減法
  • *:乘法
  • /:除法
  • %:取余

可以使用$((expression))expr命令來進(jìn)行數(shù)值運(yùn)算。例如:

#!/bin/bash

num1=10
num2=5

# 使用$((expression))進(jìn)行數(shù)值運(yùn)算
result1=$((num1 + num2))
echo "Result 1: $result1"

# 使用expr命令進(jìn)行數(shù)值運(yùn)算
result2=$(expr $num1 - $num2)
echo "Result 2: $result2"

在這個(gè)例子中,首先定義了兩個(gè)變量num1num2,然后使用$((expression))進(jìn)行加法運(yùn)算和expr命令進(jìn)行減法運(yùn)算,分別將結(jié)果賦值給result1result2,最后輸出結(jié)果。

4.2 字符串運(yùn)算:

可以使用字符串運(yùn)算符進(jìn)行字符串運(yùn)算,例如:

  • +:字符串拼接
  • =:字符串相等
  • !=:字符串不相等
  • -z:字符串為空
  • -n:字符串不為空

例如:

#!/bin/bash

str1="Hello"
str2="World"

# 字符串拼接
result1=$str1$str2
echo "Result 1: $result1"

# 字符串相等判斷
if [ $str1 = $str2 ]
then
    echo "Strings are equal."
else
    echo "Strings are not equal."
fi

# 字符串為空判斷
if [ -z $str1 ]
then
    echo "String is empty."
else
    echo "String is not empty."
fi

在這個(gè)例子中,首先定義了兩個(gè)變量str1str2,然后使用+運(yùn)算符進(jìn)行字符串拼接,將結(jié)果賦值給result1,然后使用=運(yùn)算符進(jìn)行字符串相等判斷,最后使用-z運(yùn)算符進(jìn)行字符串為空判斷,根據(jù)不同的情況輸出結(jié)果。

4.3 邏輯運(yùn)算:可以使用邏輯運(yùn)算符進(jìn)行邏輯運(yùn)算,例如:

  • &&:邏輯與
  • ||:邏輯或
  • !:邏輯非

例如:

#!/bin/bash

num=10

# 邏輯與運(yùn)算
if [ $num -gt 0 ] && [ $num -lt 20 ]
then
    echo "Number is between 0 and 20."
else
    echo "Number is not between 0 and 20."
fi

# 邏輯或運(yùn)算
if [ $num -eq 0 ] || [ $num -eq 20 ]
then
    echo "Number is either 0 or 20."
else
    echo "Number is neither 0 nor 20."
fi

# 邏輯非運(yùn)算
if ! [ $num -eq 0 ]
then
    echo "Number is not 0."
else
    echo "Number is 0."
fi

在這個(gè)例子中,首先定義了一個(gè)變量num,然后使用-gt-lt運(yùn)算符進(jìn)行數(shù)值比較,使用&&運(yùn)算符進(jìn)行邏輯與運(yùn)算,使用-eq運(yùn)算符進(jìn)行數(shù)值比較,使用||運(yùn)算符進(jìn)行邏輯或運(yùn)算,使用-eq運(yùn)算符進(jìn)行數(shù)值比較,使用!運(yùn)算符進(jìn)行邏輯非運(yùn)算,根據(jù)不同的情況輸出結(jié)果。

5. 函數(shù)

在shell編程中,可以使用函數(shù)來封裝一段可重用的代碼。函數(shù)可以接受參數(shù),執(zhí)行一系列操作,并返回一個(gè)值。下面是一個(gè)簡單的函數(shù)示例:

#!/bin/bash

# 定義一個(gè)函數(shù)
hello() {
    echo "Hello, $1!"
}

# 調(diào)用函數(shù)
hello "World"

在這個(gè)例子中,首先使用hello() { ... }的語法定義了一個(gè)名為hello的函數(shù)。函數(shù)中的$1表示第一個(gè)參數(shù),通過$1可以獲取到函數(shù)調(diào)用時(shí)傳入的參數(shù)。在函數(shù)中,使用echo命令輸出一條帶有參數(shù)的問候語。然后,在函數(shù)定義后,使用hello "World"的語法調(diào)用了這個(gè)函數(shù),并傳入了一個(gè)參數(shù)"World"。運(yùn)行腳本后,會(huì)輸出Hello, World!。

除了接受參數(shù)和輸出結(jié)果,函數(shù)還可以執(zhí)行其他各種操作,例如進(jìn)行數(shù)值運(yùn)算、字符串處理、文件操作等。下面是一個(gè)更復(fù)雜的函數(shù)示例:

#!/bin/bash

# 定義一個(gè)函數(shù),計(jì)算兩個(gè)數(shù)的和
sum() {
    local num1=$1
    local num2=$2
    local result=$((num1 + num2))
    echo "The sum of $num1 and $num2 is $result."
}

# 調(diào)用函數(shù)
sum 10 5

在這個(gè)例子中,首先使用sum() { ... }的語法定義了一個(gè)名為sum的函數(shù)。函數(shù)中使用local關(guān)鍵字定義了三個(gè)局部變量num1num2result,并分別賦值為傳入的兩個(gè)參數(shù)的和。然后,使用echo命令輸出計(jì)算結(jié)果。在函數(shù)定義后,使用sum 10 5的語法調(diào)用了這個(gè)函數(shù),并傳入了兩個(gè)參數(shù)105。運(yùn)行腳本后,會(huì)輸出The sum of 10 and 5 is 15.。

總結(jié)

Shell編程是一種在Unix/Linux系統(tǒng)下進(jìn)行腳本編程的方式。在Shell腳本中,可以使用變量來存儲(chǔ)數(shù)據(jù),使用條件語句進(jìn)行邏輯判斷,使用循環(huán)語句進(jìn)行重復(fù)操作,使用運(yùn)算符進(jìn)行數(shù)值和邏輯運(yùn)算,使用函數(shù)封裝可重用的代碼。通過合理使用這些特性,可以實(shí)現(xiàn)各種復(fù)雜的計(jì)算和邏輯操作。Shell腳本可以用于自動(dòng)化任務(wù)、系統(tǒng)管理、數(shù)據(jù)處理等各種場(chǎng)景。它具有簡單易學(xué)、靈活高效的特點(diǎn),是Unix/Linux系統(tǒng)下非常重要的工具之一。無論是初學(xué)者還是有經(jīng)驗(yàn)的開發(fā)者,都可以通過Shell編程來簡化工作、提高效率。文章來源地址http://www.zghlxwxcb.cn/news/detail-625968.html

到了這里,關(guān)于【Shell編程】Linux Shell編程入門:輸入輸出、變量、條件判斷、函數(shù)和運(yùn)算的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 「Linux系列」Shell 輸入/輸出重定向

    在Shell中,輸入重定向允許你將一個(gè)文件或命令的輸出作為另一個(gè)命令的輸入,而不是從標(biāo)準(zhǔn)輸入(通常是鍵盤)讀取。這是通過特殊符號(hào) 實(shí)現(xiàn)的。使用輸入重定向,你可以將文件的內(nèi)容作為命令的輸入,從而執(zhí)行特定的操作。 下面是一個(gè)Shell輸入重定向的案例: 假設(shè)你有一

    2024年04月15日
    瀏覽(25)
  • linux的shell script判斷用戶輸入的字符串,判斷主機(jī)端口開通情況

    linux的shell script判斷用戶輸入的字符串,判斷主機(jī)端口開通情況

    判斷輸入的字符串是否是hello 圖一運(yùn)行報(bào)錯(cuò) 檢查發(fā)下,elif? 判斷里面少個(gè)引號(hào),哎,現(xiàn)在小白到了,一看就會(huì),一寫就錯(cuò)的時(shí)候了,好像現(xiàn)在案例比較簡單,行數(shù)較少。 案例二 if 結(jié)合test 判斷主機(jī)端口 802,2,21,21,25是否通過,明天吧

    2024年02月06日
    瀏覽(26)
  • Linux系統(tǒng)Shell腳本編程之條件語句

    Linux系統(tǒng)Shell腳本編程之條件語句

    Shell 環(huán)境根據(jù)命令執(zhí)行后的返回狀態(tài)值 \\\" $? \\\" 來判斷是否執(zhí)行成功,當(dāng)返回值為0時(shí)表示成功,否則表示失敗或異常(非0值)。 使用專門的測(cè)試工具 test 命令,可以對(duì)特定條件進(jìn)行測(cè)試,并根據(jù)返回值(值為0)來判斷是否成立。 test命令格式 文件測(cè)試指的是根據(jù)給定的路徑名

    2024年01月25日
    瀏覽(24)
  • Linux centos7 bash編程(循環(huán)與條件判斷)

    Linux centos7 bash編程(循環(huán)與條件判斷)

    在編程訓(xùn)練中,循環(huán)結(jié)構(gòu)與條件判斷十分重要。 根據(jù)條件為真、為假,確定是否執(zhí)行循環(huán)。 有時(shí),根據(jù)條件的真假結(jié)果,決定執(zhí)行哪些語句,這就是分支語句。 為了訓(xùn)練分支語句與循環(huán)語句,我們?cè)O(shè)計(jì)一個(gè)案例: 求一組數(shù)字:兩數(shù)平方和為另一數(shù)平方 符合條件時(shí),有三個(gè)

    2024年02月10日
    瀏覽(29)
  • 【Linux】shell編程(一) 變量

    目錄 【Linux基礎(chǔ)】shell編程(一) 變量 什么是shell編程 如何運(yùn)行shell腳本 第一行 #!/bin/bash 第一行叫什么? WHAT IS THIS LINE CALLED? 為什么要加這個(gè),有什么用? shell的變量 變量的賦值和使用 變量替換 位置變量 BASH引號(hào)規(guī)則 小結(jié) 簡單的命令可以在命令行中直接輸入,但是復(fù)雜的

    2024年02月08日
    瀏覽(21)
  • linux shell編程規(guī)范和變量

    linux shell編程規(guī)范和變量

    目錄 一、shell簡述 二、shell腳本 三、重定向 四、管道符 五、變量 六、shell腳本基本知識(shí)? 七、預(yù)定義變量小實(shí)驗(yàn) ? ? ? ? ? ? ? ? ? ? ? 一、shell簡述 概念:shell解釋器,翻譯官功能,與內(nèi)核進(jìn)行溝通的應(yīng)用程序。 把代碼翻譯為二進(jìn)制,讓內(nèi)核處理,負(fù)責(zé)接收用戶輸入的操

    2024年02月06日
    瀏覽(25)
  • Linux:Shell腳本和Shell變量的入門指南

    [外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來直接上傳(img-Z05Ey0Tt-1687331750572)(https://example.com/linux-shell-image.png)] Shell腳本是一種用于自動(dòng)化任務(wù)和批處理的腳本語言,主要用于Unix和Linux系統(tǒng)。它提供了一種簡單而強(qiáng)大的方式來執(zhí)行系統(tǒng)命令、處理文件、控制流

    2024年02月10日
    瀏覽(29)
  • shell腳本----條件判斷語句

    shell腳本----條件判斷語句

    文件測(cè)試 test命令 測(cè)試表達(dá)是是否成立,若成立則返回0,否則返回其他的數(shù) 用法一:test 條件表達(dá)式 用法二:[ 條件表達(dá)式 ] 選項(xiàng) 含義 -e 測(cè)試目錄或者文件是否存在 -d 測(cè)試是否為目錄 -f 測(cè)試是否為文件 -r 測(cè)試當(dāng)前用戶是否有讀的權(quán)限 -w 測(cè)試當(dāng)前用戶是否有寫的權(quán)限 -x 測(cè)

    2024年02月01日
    瀏覽(41)
  • shell中的條件判斷

    在shell中經(jīng)常會(huì)用到條件語句,常用的條件語句有if、while、case等 if判斷 實(shí)例如下: while循環(huán) 實(shí)例如下: case多條件 實(shí)例如下:

    2024年02月08日
    瀏覽(22)
  • Linux shell編程學(xué)習(xí)筆記6:查看和設(shè)置變量的常用命令

    Linux shell編程學(xué)習(xí)筆記6:查看和設(shè)置變量的常用命令

    上節(jié)我們介紹了變量的變量命名規(guī)則、變量類型、使用變量時(shí)要注意的事項(xiàng),今天我們學(xué)習(xí)一下查看和設(shè)置變量的一些常用命令,包括變量的提升,有些命令在之前的實(shí)例中已經(jīng)使用過了。 語法格式:echo [參數(shù)] [輸出內(nèi)容] 常用參數(shù): -e:支持反斜線控制的字符轉(zhuǎn)換(具體參

    2024年02月07日
    瀏覽(22)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包