檢查 Bash 中是否存在輸入?yún)?shù)的問題
當(dāng)我們創(chuàng)建 Bash 腳本時,我們可能希望在我們的腳本中使用參數(shù)來成功運(yùn)行。 因此,我們需要創(chuàng)建一個腳本來檢查用戶在腳本中使用的輸入?yún)?shù)的數(shù)量。
當(dāng)用戶在使用腳本或命令時沒有傳遞所需參數(shù)時,所有這些都可以防止意外行為,然后我們可以傳遞一條錯誤消息,告訴用戶他們沒有使用所需數(shù)量的參數(shù)。
本文將向您展示如何檢查輸入?yún)?shù)是否存在或現(xiàn)有參數(shù)的數(shù)量。
在 Bash 中使用 $# 檢查輸入?yún)?shù)是否存在
在 Bash 中,一個特殊變量 $# 保存輸入?yún)?shù)。 使用 $#,您可以檢查有多少輸入?yún)?shù)已傳遞給 Bash 腳本。
一個簡單的 Bash 腳本將向您顯示此 $# 變量在不帶參數(shù)傳遞或傳遞兩個參數(shù)時的含義。
#!/bin/bash echo "The number of input arguments passed to this script: " echo $#
讓我們在沒有輸入?yún)?shù)的情況下運(yùn)行腳本:
$ ./script.sh
終端輸出如下圖:
The number of input arguments passed to this script:
0
現(xiàn)在,讓我們將兩個參數(shù)傳遞給同一個腳本:
$ ./script.sh one two
腳本的輸出如下:
The number of input arguments passed to this script:
2
現(xiàn)在,我們可以在我們的腳本中使用 $# 和一個條件語句來檢查 KaTeX parse error: Expected 'EOF', got '#' at position 1: #? 是否等于零(意味著沒有輸入?yún)?hellip;#` 大于 0,則條件變?yōu)榧?,并?zhí)行條件語句的 else 部分。
#!/bin/bash if [ $# -eq 0 ] then echo "No input arguments exist" exit 1 else echo "The number of input arguments passed:" echo $# fi
讓我們使用以下不帶參數(shù)的命令運(yùn)行腳本:
$ ./script.sh
代碼的輸出:
No input arguments exist
現(xiàn)在,讓我們運(yùn)行一個帶參數(shù)的不同腳本命令:
$ ./script.sh one two
代碼的輸出是不同的,因?yàn)闂l件檢查等于 false:
The number of input arguments passed:
2
除此之外,我們可以使用另一個使用 $[number]
的特殊變量來訪問輸入?yún)?shù)。 這些是我們可以在 Bash 中使用的位置參數(shù)。
如果我們知道我們將獲得三個變量或已經(jīng)確定,我們可以使用下面的代碼訪問這三個變量。
#!/bin/bash echo "The input arguments are:" echo $1 $2 $3
當(dāng)傳遞三個參數(shù)時,代碼的輸出將如下所示:
The input arguments are:
one two three
使用 $1 檢查 Bash 中是否存在輸入?yún)?shù)
記住我們在上一節(jié)中討論的位置參數(shù)。 我們可以使用第一個 $1 來檢查是否傳遞了任何輸入?yún)?shù),因?yàn)槿绻麤]有輸入?yún)?shù),則位置參數(shù) $1
中不會有任何值。
因此,我們可以使用 if-else 語句,其中條件表達(dá)式檢查位置參數(shù) $1 中是否存在值。 但是,如果有一個值,它會使用位置參數(shù)回顯輸入?yún)?shù)的數(shù)量和第一個參數(shù)。
#!/bin/bash if [ -z "$1" ] then echo "Please, pass an argument" exit 1 else echo "The number of input arguments are" echo $# echo "The first one is" echo $1 fi
讓我們運(yùn)行不帶參數(shù)的代碼:
$ ./script.sh
腳本的輸出:
Please, pass an argument
現(xiàn)在,讓我們用一些參數(shù)來運(yùn)行它:
$ ./script.sh jiyik stack blog
代碼的輸出:
The number of input arguments are
3
The first one is
jiyik
到此這篇關(guān)于檢查 Bash 中是否存在輸入?yún)?shù)的文章就介紹到這了,更多相關(guān)檢查 Bash 中是否存在參數(shù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Shell腳本實(shí)現(xiàn)的基于SVN的代碼提交量統(tǒng)計工具
這篇文章主要介紹了Shell腳本實(shí)現(xiàn)的基于SVN的代碼提交量統(tǒng)計工具,本文直接給出實(shí)現(xiàn)腳本代碼,需要的朋友可以參考下2015-06-06shell腳本實(shí)現(xiàn)本地文件與服務(wù)器文件同步
這篇文章主要介紹了本地文件與服務(wù)器文件同步shell腳本的方法,然后在文章給大家補(bǔ)充介紹了shell腳本備份本地服務(wù)器的文件到遠(yuǎn)程服務(wù)器的實(shí)例代碼,需要的朋友可以參考下2017-11-11linux下批量刪除utf8 bom的實(shí)現(xiàn)方法
下面小編就為大家?guī)硪黄猯inux下批量刪除utf8 bom的實(shí)現(xiàn)方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-03-03通過shell進(jìn)行數(shù)學(xué)運(yùn)算的多種方式
這篇文章主要介紹了通過shell進(jìn)行數(shù)學(xué)運(yùn)算的多種方式、有l(wèi)et命令 、$[]形式、expr命令等,需要的朋友可以參考下2014-03-03