自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Bash 基礎(chǔ)知識系列 #3:傳遞參數(shù)和接受用戶輸入

系統(tǒng) Linux
在 Bash 基礎(chǔ)系列的這一章中,學(xué)習(xí)如何向 Bash 腳本傳遞參數(shù)并使它們具有交互性。

來讓 Bash 腳本有參數(shù)吧 ??

你可以通過向 Bash 腳本傳遞變量來使其更加有用和更具交互性。

讓我通過示例詳細(xì)向你展示這一點。

將參數(shù)傳遞給 Shell 腳本

當(dāng)你運行 Shell 腳本時,你可以按以下方式向其中添加其他變量:

./my_script.sh var1 var2

在腳本內(nèi)部,你可以使用 $1 作為第一個參數(shù),$2 作為第二個參數(shù),依此類推。

?? $0 是一個特殊變量,保存正在執(zhí)行的腳本的名稱。

讓我們通過一個實際的例子來看看。切換到保存練習(xí) Bash 腳本的目錄。

mkdir -p bash_scripts && cd bash_scripts

現(xiàn)在,創(chuàng)建一個名為 arguments.sh (我想不出更好的名稱)的新 Shell 腳本,并向其中添加以下行:

#!/bin/bash
echo "Script name is: $0"
echo "First argument is: $1"
echo "Second argument is: $2"

保存文件并使其可執(zhí)行?,F(xiàn)在像往常一樣運行腳本,但這次向其中添加任意兩個字符串。你將看到屏幕上打印的詳細(xì)信息。

?? 參數(shù)由空格(空格、制表符)分隔。如果參數(shù)中有空格,請使用(英文)雙引號將其引起來,否則它將被視為單獨的參數(shù)。

Pass arguments to the bash scriptingPass arguments to the bash scripting

?? Bash 腳本最多支持 255 個參數(shù)。但對于參數(shù) 10 及以上,你必須使用花括號 ${10}、${11}...${n}。

正如你所看到的,$0 代表腳本名稱,而其余參數(shù)存儲在編號變量中。你還可以在腳本中使用一些其他特殊變量。

特殊變量

變量描述

$0

腳本名稱

$1、$2、……$9

腳本參數(shù)

${n}

腳本參數(shù)從 10 到 255

$#

參數(shù)數(shù)量

$@

所有參數(shù)

$$

當(dāng)前 Shell 的進(jìn)程 ID

$!

最后執(zhí)行的命令的進(jìn)程 ID

$?

最后執(zhí)行命令的退出狀態(tài)

???♀? 修改上面的腳本以顯示參數(shù)數(shù)量。

如果參數(shù)數(shù)量不匹配怎么辦?

在上面的示例中,你為 Bash 腳本提供了兩個參數(shù)并在腳本中使用了它們。

但是,如果你只提供一個參數(shù)或三個參數(shù)怎么辦?

讓我們實際做一下吧。

Passing fewer or more arguments to bash scriptPassing fewer or more arguments to bash script

正如你在上面所看到的,當(dāng)你提供的參數(shù)超出預(yù)期時,結(jié)果仍然是一樣的。不使用其他參數(shù),因此不會產(chǎn)生問題。

但是,當(dāng)你提供的參數(shù)少于預(yù)期時,腳本將顯示空白。如果腳本的一部分依賴于缺少的參數(shù),這可能會出現(xiàn)問題。

接受用戶輸入并制作交互式 Bash 腳本

你還可以創(chuàng)建提示用戶通過鍵盤提供輸入的 Bash 腳本。這使你的腳本具有交互性。

read 命令提供了此功能。你可以這樣使用它:

echo "Enter something"
read var

上面的 echo 命令不是必需的,但最終用戶不會知道他們必須提供輸入。然后用戶在按回車鍵之前輸入的所有內(nèi)容都存儲在 var 變量中。

你還可以顯示提示消息并在單行中獲取值,如下所示:

read -p "Enter something? " var

讓我們看看它的實際效果。創(chuàng)建一個新的 interactive.sh Shell 腳本,內(nèi)容如下:

#!/bin/bash
echo "What is your name, stranger?"
read name
read -p "What's your full name, $name? " full_name
echo "Welcome, $full_name"

在上面的示例中,我使用 name 變量來獲取名稱。然后我在提示中使用 name 變量,并在 full_name 變量中獲取用戶輸入。我使用了兩種使用 read 命令的方法。

現(xiàn)在,如果你授予執(zhí)行權(quán)限,然后運行此腳本,你會注意到該腳本顯示 What is your name, stranger?,然后等待你從鍵盤輸入內(nèi)容。你提供輸入,然后它會顯示 What's your full name 消息,并再次等待輸入。

以下是供你參考的示例輸出:

Interactive bash shell scriptInteractive bash shell script

??? 練習(xí)時間

是時候練習(xí)你所學(xué)到的東西了。嘗試為以下場景編寫簡單的 Bash 腳本。

練習(xí) 1:編寫一個帶有三個參數(shù)的腳本。你必須使腳本以相反的順序顯示參數(shù)。

預(yù)期輸出:

abhishek@itsfoss:~/bash_scripts$ ./reverse.sh ubuntu fedora arch
Arguments in reverse order:
arch fedora ubuntu

練習(xí) 2:編寫一個腳本,顯示傳遞給它的參數(shù)數(shù)量。

提示:使用特殊變量 $#

預(yù)期輸出:

abhishek@itsfoss:~/bash_scripts$ ./arguments.sh one and two and three
Total number of arguments: 5

練習(xí) 3:編寫一個腳本,將文件名作為參數(shù)并顯示其行號。

提示:使用 wc 命令來計算行號。

你可以在社區(qū)中討論你的解決方案。

很好! 現(xiàn)在你可以(傳遞)參數(shù)了 ?? 在下一章中,你將學(xué)習(xí)在 Bash 中執(zhí)行基本數(shù)學(xué)運算。

責(zé)任編輯:龐桂玉 來源: Linux中國
相關(guān)推薦

2023-08-21 12:31:41

BashForWhile

2023-08-11 15:46:40

BashIf Else 語句

2023-07-17 14:29:01

Bash算術(shù)運算

2023-08-22 21:42:03

Bash函數(shù)

2023-07-20 15:37:50

Bash數(shù)組

2023-07-12 14:13:03

BashLinux

2022-12-01 08:10:49

Bash腳本參數(shù)

2023-07-30 09:50:51

Bash字符串

2011-05-31 10:14:24

協(xié)議IPARP

2011-05-31 09:29:47

網(wǎng)際互連以太網(wǎng)交換機(jī)

2023-06-19 11:30:19

bashshell

2011-06-01 09:26:58

路由路由器路由選擇協(xié)議

2021-08-18 16:09:39

NestJS

2013-04-09 13:42:23

Unity3D基礎(chǔ)知識梳理

2011-05-31 13:50:14

CiscoIOS

2015-08-27 14:50:40

BISSIS

2023-08-31 11:41:08

2009-12-22 14:27:28

Cisco3600

2011-06-02 09:36:03

幀中繼廣域網(wǎng)協(xié)議

2010-12-14 09:30:12

點贊
收藏

51CTO技術(shù)棧公眾號