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

Bash 初學者系列 3:給 bash 腳本傳遞參數(shù)

系統(tǒng) Linux
今天我們將介紹如何通過命令行將變量以參數(shù)的形式傳遞給 bash 腳本。

我們在上一篇文章中介紹了??如何在 bash 腳本中使用變量???,可以響應各種數(shù)據(jù)以及接收用戶輸入。

今天我們將介紹如何通過命令行將變量以參數(shù)的形式傳遞給 bash 腳本。

向 bash 傳遞參數(shù)

下面腳本 count_lines.sh 將輸出用戶指定的文件的總行數(shù):

#!/bin/bash
echo -n "Please enter a filename: "readnlines=$(wc -l < $filename)
echo "There are $nlines lines in $filename"

例如,用戶可以輸入文件 /etc/passwd,腳本將輸出行數(shù):

圖片

腳本運行良好;然而,還有進一步優(yōu)化的空間。

我們可以讓用戶在運行腳本時簡單地將文件名作為命令行參數(shù)傳遞,而不是提示用戶輸入文件名,如下所示:

./count_lines.sh /etc/passwd

第一個 bash 參數(shù)(也稱為位置參數(shù))可以在 bash 腳本中使用 $1 訪問。所以在 count_lines.sh 中,可以按如下方式將文件名變量替換為 $1:?

#!/bin/bash
nlines=$(wc -l < $1)echo "There are $nlines lines in $1"

我們?nèi)サ袅说谝粋€腳本中的 read 命令和第一個 echo 命令,這樣腳本看起來更加簡潔。

這樣,在運行腳本的時候,可以將文件名作為參數(shù)傳遞:?

./count_lines.sh    /etc/groupThere are 73 lines in /etc/group

傳遞多個參數(shù)

可以一次性向 bash 腳本傳遞多個參數(shù)。通常情況下,以下是向腳本傳遞多個參數(shù)的語法:

script.sh arg1 arg2 arg3

第二個參數(shù)將由 $2 變量引用,第三個參數(shù)由 $3 引用,以此類推。

這里大家可能有一個疑惑,第一個變量是 $1,那么 $0 是用來做什么的呢?其實 $0 變量用于 bash 腳本的名稱。

現(xiàn)在我們再來修改一下 count_lines.sh 腳本文件,以便其可以計算多個文件的行數(shù),如下:?

#!/bin/bash
n1=$(wc -l < $1)n2=$(wc -l < $2)n3=$(wc -l < $3)
echo "There are $n1 lines in $1"echo "There are $n2 lines in $2"echo "There are $n3 lines in $3"

運行腳本,并傳遞三個文件作為參數(shù):

圖片

如上圖所示,腳本輸出了三個文件的行數(shù);當然,有一點是不言而喻的,輸出信息是依文件順序的。

由 bash shell 中的參數(shù)想到的

Linux 有很多命令,其中有一些比較復雜,比如有很長的語法,或者很多的選項。不過我們可以通過使用 bash 參數(shù),將那些很難的命令變?yōu)楹芎唵蔚娜蝿铡?/span>

看如下 find.sh 腳本:?

#!/bin/bash
find / -iname $1

這是一個很簡單但是很有用的腳本,提供文件名作為參數(shù),腳本會打印出文件的位置:

圖片

通過上圖可以看到,這個腳本比單純的使用 ??find 命令???要簡單的多。這就說明了可以使用參數(shù)將 Linux 中比較復雜的命令轉(zhuǎn)為比較簡單的 bash 腳本。

上述腳本中的 2> /dev/null,是指將報錯信息重定向到 /dev/null,也就是不打印報錯信息。大家可參考:

??Linux 中如何將輸出和錯誤重定向到 /dev/null??

bash shell 中的特殊變量

bash 中有很多內(nèi)置的特殊變量,使用非常方便。如下是最常見的:

變量

描述

$0

bash 腳本的名稱

$1, $2...$n

bash 腳本的參數(shù)

$$

當前 shell 的進程 ID

$#

傳遞給腳本的參數(shù)總數(shù)

$@

傳遞給腳本的所有參數(shù)的值

$?

上一個執(zhí)行命令的退出狀態(tài)

$!

上次執(zhí)行命令的進程 ID

大家可以實際查看一下這些特殊變量,參考如下 variables.sh 腳本:?

#!/bin/bash
echo "Name of the script: $0"echo "Total number of arguments: $#"echo "Values of all the arguments: $@"

然后提供幾個參數(shù)運行腳本:

圖片

責任編輯:龐桂玉 來源: TIAP
相關推薦

2022-12-13 12:55:15

Bash循環(huán)

2022-11-30 07:47:00

Bash腳本

2022-12-02 14:30:24

Bash腳本數(shù)組

2022-12-14 10:08:00

BashLinux

2022-12-16 09:01:24

2022-12-09 07:58:52

Bash條件語句

2022-12-08 12:05:03

Bash字符串

2022-11-28 08:01:47

BashLinuxshell 腳本

2022-12-07 07:43:21

2011-04-12 10:13:24

2011-07-04 14:14:54

java

2023-07-15 18:19:47

Bash參數(shù)

2018-04-08 14:47:06

Linux命令type

2018-04-24 11:09:13

LinuxShellfc

2018-05-14 08:53:51

Linux命令shuf

2016-11-18 17:40:35

2010-05-12 17:36:44

MySQL初學者

2013-04-08 16:35:52

Adobe Edge

2011-06-17 14:41:56

Qt

2013-03-06 10:40:58

Adobe Edge HTML5
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 精品国产一区二区三区性色av | 国产乱码精品一区二区三区忘忧草 | 精品国产色 | 亚洲国产二区 | 国产一区视频在线 | 日本在线观看网址 | 成人性视频免费网站 | av资源中文在线天堂 | 天天av天天好逼 | 天天插天天搞 | 亚洲成av | 久久精品国产一区二区三区不卡 | 久久久www成人免费精品 | 毛片在线看看 | 国产乱码精品一区二区三区中文 | 精品一二三区在线观看 | 国产视频精品区 | 91大神xh98xh系列全部 | 成人欧美一区二区三区在线播放 | 久久天天躁狠狠躁夜夜躁2014 | 精品综合久久久 | 欧美在线一二三 | 国产精品美女久久久久aⅴ国产馆 | 涩涩视频在线播放 | 中文字幕在线一区二区三区 | 久久精品亚洲精品国产欧美kt∨ | 99riav国产一区二区三区 | 午夜激情影院 | 中日av| 亚洲精品在线免费 | 国产一二区视频 | 亚洲在线一区二区 | 日本高清aⅴ毛片免费 | 黄色大片网站 | www.男人天堂.com | 激情五月婷婷丁香 | 国产日本精品视频 | 一区二区三区亚洲 | 欧美福利一区 | 亚洲精品久久久一区二区三区 | 中文字幕在线观看一区 |