當前位置:首頁 » 編程軟體 » bash腳本參數

bash腳本參數

發布時間: 2023-08-01 09:06:56

⑴ 如何創建一個shell腳本檢查命令行參數個數,如果參數不是三個顯示一條錯誤信息,為三個則顯示參數

1、「shell」中有一個特殊變數「$#」:表示包含參數的個數;

2、「if [ $# -ne 3 ] ; then # 」:如果參數不為3個

3、輸入「if [ $# -ne 3 ];then echo errorelse echo "$1 $2 $3"if」

⑵ 執行shell腳本的方式主要是什麼

(1)輸入定向到Shell腳本
$ bash < 腳本名

(2)以腳本名作為參數
$ bash 腳本名 〔參數〕

(3)將Shell腳本的許可權設置為可執行,然後在提示符下直接執行它。
$ chmod a+x 腳本名
$ PATH=&PATH:.
$ 腳本名

⑶ 查看bash變數值正確的方法是

查看猛梁弊bash變數值正確的方法如下。
1、我們先創造一個簡單的腳本。將HelloWorld。。輸出到控制台。使用vi命令創建新文件。
2、打開編輯器後,枝族按如下所示編寫。#。/usr/bin/bashecho"HelloWorld。。"exit0第一行上的#。/usr/bin/bash表示它是使用bash的shell腳本。
3、使渣纖用exit0退出bash。參數0表示正常結束。

⑷ 簡述shell的參數

我們可以在執行 Shell 腳本時,向腳本傳遞參數,腳本內獲取參數的格式為:$n。n 代表一個數字,1 為執行腳本的第一個參數,2 為執行腳本的第二個參數,以此類推……

實例

以下實例我們向腳本傳遞三個參數,並分別輸出,其中 $0 為執行的文件名:

#!/bin/bash
echo "Shell 傳遞參數實例!";
echo "執行的文件名:$0";
echo "第一個參數為:$1";
echo "第二個參數為:$2";
echo "第三個參數為:$3";
為腳本設置可執行許可權,並執行腳本,輸出結果如下所示:

$ chmod +x test.sh
$ ./test.sh 1 2 3
Shell 傳遞參數實例!
執行的文件名:./test.sh
第一個參數為:1
第二個參數為:2
第三個參數為:3
另外,還有幾個特殊字元用來處理參數:

參數處理 說明
$# 傳遞到腳本的參數個數
$* 以一個單字元串顯示所有向腳本傳遞的參數。 如"$*"用「"」括起來的情況、以"$1 $2 … $n"的形式輸出所有參數。
$$ 腳本運行的當前進程ID號
$! 後台運行的最後一個進程的ID號
$@ 與$*相同,但是使用時加引號,並在引號中返回每個參數。 如"$@"用「"」括起來的情況、以"$1" "$2" … "$n" 的形式輸出所有參數。
$- 顯示Shell使用的當前選項,與set命令功能相同。
$? 顯示最後命令的退出狀態。0表示沒有錯誤,其他任何值表明有錯誤。
#!/bin/bash

echo "Shell 傳遞參數實例!";
echo "第一個參數為:$1";

echo "參數個數為:$#";
echo "傳遞的參數作為一個字元串顯示:$*";
執行腳本,輸出結果如下所示:

$ chmod +x test.sh
$ ./test.sh 1 2 3
Shell 傳遞參數實例!
第一個參數為:1
參數個數為:3
傳遞的參數作為一個字元串顯示:1 2 3

linux中設計一個shell腳本程序可以接受命令行輸入的參數執行相應的菜單命令

之所以用到命令行參數,關鍵在於shell腳本需要與運行腳本的人員進行交互。
bash shell提供了命令行參數添加在命令後面的數據值)、命令行選項修改命令行為的單字元值)和直接讀取鍵盤輸入。
1、命令行參數
向shell腳本傳遞數據的最基本方式是使用命令行參數。
1)讀取參數
讀取輸入的參數的變數為位置參數,位置參數通過標准數字表示,
其中$0為程序名稱,$1為第一個參數,$2為第二個參數,依次類推,直到$9為第九個參數。
shell腳本自動將命令行參數賦值給各個位置變數。
同時輸入多個參數可以是數值也可以是字元串)時,必須使用空格分隔要想在參數值中包含空格,就必須使用單引號或雙引號)
當參數多於9個後,必須在shell腳本內使用大括弧將變數括起來,如${10}。從而可以使用任意個參數。
2)讀取程序名稱
傳遞給變數$0的字元串實際上是程序的路徑根據調用方法決定是相對還是絕對路徑)。
使用basename命令可以去掉路徑前綴,只獲得程序名稱名字中不 可以有空格)。
3)測試腳本
當腳本認為應該包含參數,卻實際上沒有數據時,就會出錯。
好的方法是對參數進行檢查來保證使用參數前確實存在數據,可以使用-n參數來檢查。
例子:if [ –n 「$1」 ] then .. else .. fi
2、特殊的參數變數
用於跟蹤命令行參數
1)參數計數
使用特殊變數$#測試執行腳本時包含的命令行參數個數。腳本中任何位置都可以 使用$#
例子:if [ $# –ne 2 ] 即可測試參數個數
可以使用${!#}來返回最後一個命令行參數當無參數時,$#為0,而${!#}為程序名)
2)獲取所有數據
變數$*將命令行中提供的所有參數作為一個單詞處理,它將多個參數看成 一個參數。
變數$@將命令行中提供的所有參數作為同一個字元串中的多個單詞處理。 允許對其中的值進行迭代一般使用for),分隔開不同參數
3、移位
shift命令能夠改變命令行參數的相對位置。默 認將每個參數變數左移一個位置變數$0不變,把$1丟棄,注意不可以恢復了!)
在不清楚參數數目情況下,這是一個迭代參數的好辦法。
可以為shift提供一個參數,來實現多位移變化。
4、處理選項
選項是由破折號引導的單個字母,用於更改命令的行為。
1,找出選項
1)處理簡單選項
可以使用處理命令行參數相同的方法處理選項,抽取時使用case語句進行判斷是否符合選項格式。
2)從參數中分離選項
同時使用選項和參數時,可以使用--指示選項列表的結束。發現--後,shell就知道後面的是普通參數了,停止使用case處理選項。
3)處理帶值的選項
選項後緊跟參數值,一種方法是在case中對應選項後使用shift和讀後一位參數的方法處理。更好的方法如 下:
2,使用getopt命令
getopt命令在處理選項和參數時非常方便。它對參數進行重新組 織,以便於解析
1)命令格式
getopt可以接受任意形式的選項和參數列表,並自動將它們轉換為適當的格式。
命令格式為: getopt options optstring parameters
選項字元串(opstring)用於定義命令行中的有效選項字母,以及哪些選項字母需要參數值。
2)腳本中使用getopt
需要使用set命令將現有的命令行選項和參數替換為getopt命令生成的 格式化形式。
需要將原始腳本命令行參數送給getopt命令,然後將getopt命令輸出送給set命令,如下:set – `getopts –q ab:cd 「$@」`
但是getopt命令不能很好的處理帶有空格的參數值,它將空格解析為參數分隔符,而不是將雙引號引起來的兩個 值合並成一個參數。解決辦法如下:
3)更高級的getopts命令
getopts命令順序的對現有的shell參數變數進行處理,每調用一次,只處理命令中檢測到的參數中的一個。處理完所有參數後,以大於0的退出 狀態退出。
非常適宜於在循環中解析所有命令行參數
格式為: getopts optstring variable
$optarg包含需要參數值的選項要使用的值,$optind包含getopts停止處理時在參數列表中的位置。
注意:當getopts處理時,會將選項前的-去掉,所以對應的case中不需要破折號。
好的特性:
1)可以在參數值中包含空格
2)選項字母和參數值中間可以沒有空格
3)將在命令行中找到的未定義的選項都綁定為單一的輸出——問號
5、標准化選項
有一些字母選項具有標准含義。最好按照標准含義定義選項意義
-a –c –d –e –f –h –i –l –n –o –q –r –s –v- x –y
6、獲取用戶輸入
當需要在執行過程中獲得執行腳本人員的輸入,使用read命令
1)基本讀取
read命令接受標准輸入或其他文件描述符輸入。讀入後將數據放入 一個標准變數中。
-p 允許在read命令行中直接指定一個提示。
可以指定多個變數,也可以不指定將放置在reply環境變數中)
2)計時
使用-t指定一個計時器,計時數滿還未輸入,read返回一個非0的退出狀態。
使用-n指定輸入的字元個數,輸入達到預定數目時,就自動結束輸入
3)默讀
使用-s使輸入不顯示在終端例如輸入密碼)
4)讀取文件
最常用的方法是使用cat命令,並通過管道傳給包含read的while語句。

⑹ Linux shell 腳本 間接獲取輸入參數的方法

如果是bash,可以用indirect expansion來搞,語法為 ${!var}。
比如
foo=bar
bar=123
echo ${!foo}
會列印 123

再比如下面的腳本,依次列印腳本的各個輸入參數。

#!/bin/bash
var=1
while [ $var -le $# ]
do
echo "Param $var is ${!var}"
let var++
done

不用indirect expansion,也可以用 eval, 比如

#!/bin/bash
var=1
while [ $var -le $# ]
do
eval echo "Param $var is \$$var"
let var++
done

⑺ 10 分鍾學會Linux常用 bash命令

顯示所有的環境變數,如果你想獲取某個變數的詳細信息,使用 echo $VARIABLE_NAME .

Example:

whereis使用系統自動構建的資料庫來搜索可執行文件,源文件和手冊頁面。

Example:

它在環境變數PATH指定的目錄中搜索可執行文件。此命令將列印可執行文件的完整路徑。

Example:

清除窗口上的內容。

列出您的文件。 ls 有很多選項: -l 列出「長格式」的文件,其中包含文件的確切大小,擁有該文件的人員,有權查看該文件,以及何時進行上次修改。 -a 列出所有文件,包括隱藏文件。有關此命令的更多信息,請檢查此鏈接。

Example:

創建或更新您的文件。

Example:

它可以在UNIX或Linux下用於以下目的。

顯示文件的第一部分(用空格移動並鍵入q以退出)。

輸出文件的前10行。

輸出最後10行文件。用於-f在文件增長時輸出附加數據。

將文件從一個位置移動到另一個位置。

filename1 文件的源路徑, filename2 是目標路徑。

將文件從一個位置復制到另一個位置。

filename1 文件的源路徑, filename2 是目標路徑。

刪除文件。在目錄上使用此命令會給您顯示一個錯誤: rm: directory: is a directory 。 為了刪除目錄,你必須傳遞 -rf 去遞歸刪除目錄中的所有內容。

比較文件,並列出他們的差異。

讓您更改文件的讀取,寫入和執行許可權。

壓縮文件。

解壓縮gzip壓縮的文件。

讓你查看gzip壓縮文件,而不需要gunzip它。

列印文件。

查看列印機隊列。

Example:

從列印隊列移除某些內容。

awk是處理文本文件最有用的命令。它一行一行地在整個文件上運行。默認情況下,它使用空格分隔欄位。awk命令最常用的語法是

讓我們採取以下文件 /etc/passwd 。以下是此文件包含的示例數據:

所以現在讓我們從這個文件只獲取用戶名。 -F 指定在我們要基於哪個分隔欄位。在我們的例子中 : 。 { print $1 } 意味著列印出第一個匹配欄位。

運行上述命令後,您將獲得以下輸出。

有關如何使用 awk 的更多細節,請查看以下鏈接。

查找文件內的文本。您可以使用grep搜索與一個或多個正則表達式匹配的文本行,並僅輸出匹配的行。

Example:

您還可以通過使用 -i 選項強制grep忽略單詞大小寫。 -r 可用於搜索指定目錄下的所有文件,例如:

-w 只搜索單詞。有關 grep 詳細信息,請查看以下鏈接。

告訴你一個文件中有多少行,多少單詞和多少字元。

Example:

7459 是行數, 15915 是單詞數, 398400 是字元數.

用於過濾和轉換文本的流編輯器。

example.txt

用連字元替換所有空格

使用"d"替換所有的數字

排序文本文件的行

example.txt

sort example.txt

隨機化一個排序的example.txt

報告或省略重復的行

example.txt

只顯示example.txt的唯一行(首先你需要排序,否則看不到重疊)

顯示每行的唯一項,並告訴我找到了多少個實例

從每行文件中刪除部分。

example.txt

顯示第2,7和9欄的空格作為分隔符

顯示一行文字

顯示 "Hello World"

用字母之間的換行顯示 "Hello World"

簡單的最佳文本格式化程序

example: example.txt (1 line)

將example.txt的行輸出為20個字元的寬度

翻譯或刪除字元

example.txt

把所有小寫字母變成為大寫

把所有的空格變成換行符

顯示文件的行數

example.txt

帶行號顯示 example.txt

列印匹配模式的行 - 擴展表達式(別名為:'grep -E')

example.txt

在其中顯示「Lorem」或「dolor」的行

列印匹配模式到的行 - FIXED模式匹配(別名為:'grep -F')
example.txt

在example.txt中找到具體的字元串'(Lorem | doloar)'

生成一個新的目錄。

執行這個,從一個目錄轉移到另外一個目錄。

將你移動到主目錄。此命令接受可選的 dirname ,將你移動到該目錄。

告訴你你目前所在的目錄。

ssh (SSH client) 是一個用來在登錄到遠程機器並執行的命令的程序。

此命令還接受 -p 可用於連接到特定埠的選項。

返回當前登錄用戶名。

允許當前登錄的用戶更改其密碼。

顯示您的磁碟配額。

顯示當前日期和時間。

顯示月份的日歷。

顯示當前的正常運行時間。

顯示誰在線

Displays information about user.

顯示內核信息。

顯示指定命令的手冊。

顯示磁碟使用情況。

顯示文件名中文件和目錄的磁碟使用情況( -s只給出一個總數)。

列出您最後登錄的指定用戶。

列出您的進程。

使用您所提供的ID殺死(結束)進程。

用名稱殺死所有進程。

顯示當前活動的進程。

列出停止的或後台工作的Job; 恢復在後台停止的Job。

前台化最近的Job。
Brings the most recent job in the foreground.

Pings主機並輸出結果。

獲取域的whois信息。

獲取域的DNS信息。

下載文件。

在本地主機和遠程主機之間或兩台遠程主機之間傳輸文件。

從本地主機復制到遠程主機

從遠程主機復制到本地主機

此命令還接受 -P 選項可用於連接到特定的埠。

在bash中你將編寫第一行腳本文件,被叫做 shebang 。任何腳本中的這一行來確定腳本的執行能力,如獨立的可執行文件,而不是在終端中預先鍵入sh,bash,pythonphp等。

Example:

上面的一行創建一個變數str並給它賦值「hello world」。通過 $ 放在變數名的開頭來檢索變數的值。

Example:

像其他語言一樣,bash也有數組。數組是包含多個值的變數。數組的大小沒有最大限制。bash中的數組為零。第一個元素被索引為元素0.在bash中創建數組有幾種方法。以下給出了哪些。

Examples:

要在特定索引處顯示值,請使用以下語法:

如果沒有提供索引,則假定為數組元素0。要了解數組中有多少值,請使用以下語法:

Bash也支持三元條件。下面是一些例子。

檢查一些關於如何操作字元串的語法

Example:

當您運行上述示例時,該hello函數將輸出「world!」。上述兩個功能 hello 和 say 是相同的。主要區別是功能 say 。此功能列印其接收到的第一個參數。函數內的參數以與給腳本的參數相同的方式進行處理。

bash中的條件語句與其他編程語言相似。條件有許多形式,如最基本的形式是 if 表達式 then 語句,其中語句只有在表達式為真時執行。

有時,如果條件變得混亂,所以你可以使用相同的條件 case statements 。

Expression Examples:

bash 中有三種不同類型的循環。 for , while 和 until .

for 語法:

while 語法:

until 語法:

bash_profile 可以通過運行後面的命令打開。 nano ~/.bash_profile

nano ~/.bashrc

source ~/.bashrc
cd hotellogs

您可以通過傳遞不同的選項來輕松地調試bash腳本bash。例如-n,不會運行命令並僅檢查語法錯誤。-vecho命令在運行它們之前。-x命令行處理後的echo命令。

⑻ 如何給shell腳本傳參數

方法/步驟

執行「nano test.sh」創建一個新的shell腳本。

腳本test.sh的內容如下:
#!/bin/sh

name=$1

echo "the ${name} are great man!"

給新創建的test.sh的腳本賦可執行許可權,命令為「chmod 755 test.sh」。

執行'./test.sh "xiao wang"'命令,可以看到自己編寫腳本的結果「the xiao wang are great man!」。

"name=$1"中$1為系統提供的位置參數,$0代表程序的名稱,[$1/$2/...]從1開始為傳遞的參數。
linux系統除了提供位置參數還提供內置參數,內置參數如下:
$# ----傳遞給程序的總的參數數目
$? ----上一個代碼或者shell程序在shell中退出的情況,如果正常退出則返回0,反之為非0值。
$* ----傳遞給程序的所有參數組成的字元串。
$n ----表示第幾個參數,$1 表示第一個參數,$2 表示第二個參數 ... $0 ----當前程序的名稱
$@----以"參數1" "參數2" ... 形式保存所有參數
$$ ----本程序的(進程ID號)PID
$! ----上一個命令的PID

⑼ bash如何在一個腳本里引用另一個腳本定義的變數

其實不需要那麼多腳本,只要一個腳本定義目錄路徑以及每個目錄分別對應的屬性,用export命令將這些變數導出為公共環境變數即可在任意腳本中引用。
比如專門用於定義變數的腳本可以這樣寫:
export folder1=/home/tester/1
export name1=a
export owner1=userA
export folder2=/home/tester/2
export name2=b
export owner2=userB

或者先定義好,再export:
folder1=/home/tester/1
name1=a
owner1=userA
export folder1;export name1;export owner1

這些變數就可以直接在操作目錄的腳本中使用了。

熱點內容
電腦連接不了伺服器什麼意思 發布:2025-02-05 18:34:46 瀏覽:355
2015版dw怎麼配置站點 發布:2025-02-05 18:33:37 瀏覽:429
php數組中重復值 發布:2025-02-05 18:16:59 瀏覽:365
分布式存儲優點 發布:2025-02-05 18:15:29 瀏覽:644
徵婚交友源碼 發布:2025-02-05 17:45:24 瀏覽:918
3nvm伺服器怎麼搭建 發布:2025-02-05 17:43:52 瀏覽:661
cocosandroid開發 發布:2025-02-05 17:22:17 瀏覽:669
編程員發型 發布:2025-02-05 17:09:18 瀏覽:226
網站會員管理源碼 發布:2025-02-05 17:03:32 瀏覽:195
伺服器埠怎麼調節 發布:2025-02-05 16:57:41 瀏覽:48