linux shell運行腳本命令行參數,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語句。

例子:

復制代碼 代碼示例:

cat test | while read line

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/529136.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/529136.shtml
英文地址,請注明出處:http://en.pswp.cn/news/529136.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

eclipse linux遠程調試工具,使用本地Eclipse IDE調試器與遠程項目源(Linux)

我試圖找出以下情況的最佳方法。我有幾個Java源文件正在使用JNI與一些C源代碼進行通信,這些源代碼都駐留在Linux機器上。 Java部分在Linux機器上完美地構建和運行(通過JUnit)。 Java類依賴于幾個Linux(.so)庫。我想在本地計算機(Mac OS X)上運行Eclipse IDE調試器&a…

python下載文件的第三方庫_Python常用第三方庫(轉載)

wxPython 如果你之前是 windows 程序員,用 MFC 或者 WIN32API 開發界面程序,那進入 Python 國度最好的 GUI 選擇應該是 wxPython。它是 wxWidgets 的 Python Bind,與 wxWidgets 的開發完美同步,最為重要的一點是它的消息機制與 MF…

linux sybase 自動備份,Linux平臺下Sybase數據庫備份方法分析.doc

Linux平臺下Sybase數據庫備份方法分析Linux平臺下Sybase數據庫備份方法分析摘 要:對于從事信息系統管理的人員來說,掌握數據庫的備份方法在工作中尤為重要。當本地數據出錯或者磁盤損壞時,可以利用備份的數據恢復數據庫系統,從而保…

facebook對話鏈接_如何應用防錯原則,看看 Facebook 和 Gmail 是怎么做的

歡迎來到有言有料,讓思考更有張力本文共 3873 字,預計閱讀 10 分鐘作者|Siddharth Gulati譯者|張聿彤本文翻譯已獲得作者的正式授權(授權截圖如下)在用戶界面(UI)設計中,重要的是要注意最細微的細節,以使用…

linux 7 定時任務設置,centos7 配置crontab定時任務

1. 啟動cron服務# 查看服務狀態systemctl status crond# 啟動systemctl start crond# 停止systemctl stop crond# 重啟systemctl restart crond# 重新加載systemctl reload crond2. 開機自動啟動cron服務systemctl start crond.service3. 通過crontab命令管理定時任務crontab命…

模擬灰度傳感器循跡的程序_PLC編程,實例講解西門子PLC模擬量編程

給大伙分享的是關于西門子S7-300PLC模擬量方面的實例,包含了以下幾個方面的要點:1、對變送器進行取值,并進行控制2、對模數功能塊 FC105 進行調用3、對 AI 模塊進行設置4、對 AI 量程塊進行選擇這個實例, 調試的是一個流量調節回路…

linux mint 17 輸入法,LinuxMint17.1 Rebecca中安裝設置輸入法

LinuxMint14使用了幾年一直未更新,突然想去更新一下去發現源已經不支持了,所以就直接安裝了最新版本。安裝好以后發現還是跟以前一樣的毛病,沒有中文輸入法,直接sudo aptitude install fcitx* 發現仍然不行。運行im-config設定FCI…

python組成不重復的三位數是多少_Python輸出由1,2,3,4組成的互不相同且無重復的三位數...

題目:有四個數字:1、2、3、4,能組成多少個互不相同且無重復數字的三位數?各是多少? 程序分析:可填在百位、十位、個位的數字都是1、2、3、4。組成所有的排列后再去 掉不滿足條件的排列。 程序源代碼 方法1&…

作業調度C語言編寫,【作業調度方案】 (C語言代碼)

解題思路:如圖所示,對于第一組樣例輸入,按照總工序提供的順序,對于每個工件的工序從小到大,每次尋找有空閑機器的“空檔”插入,就能讓總加工時間最短。注意事項:按照約定,最短方案有且只有一種。參考代碼:#…

python判斷能否組成三角形_python三角形判定怎么做

python三角形判定怎么做?下面給大家帶來具體的例子: 相關推薦:《Python視頻教程》 例子:a int(input("The length of the side a ")) b int(input("The length of the side b ")) c int(input("The…

文件的記錄c語言程序,c語言程序學生籍貫信息記錄簿設計.docx

c 語言程序學生籍貫信息記錄簿設計學生籍貫信息記錄簿課程設計報告書班 級: 方 0909-1 學 號:姓 名: 苑 小 葉 指導教師 : 康 亞 男 石家莊鐵道大學四方學院2010年 07月 14日1課程設計報告內容1. 選擇題目題目: 學生籍貫信息記錄簿設計 2. 內容摘要摘要:學生籍貫信息管理系統是…

如何修改linux的java路徑_修改桌面文件默認存儲位置的正確方式及注意事項

之前寫了篇關于如何修改桌面文件默認存儲位置,許多人在修改后出現各種問題,今天重新來講解一下關于修改桌面文件默認存儲位置的正確方式及注意事項。第一步、在E盤下創建一個文件夾,隨便取個名字,或者默認為【新建文件夾】&#x…

secp256r1 c語言程序,rust代碼閱讀 之 libsecp256k1 (1)

在密碼學的運算中, 數字通常是非常大的. 以 ECDSA 橢圓曲線為例, 私鑰是 256 位的.所以在 libsecp256k1 這個庫里, 定義了計算的元素 Field. 其中 n 為 320 位.pub struct Field {pub(crate) n: [u32; 10],pub(crate) magnitude: u32,pub(crate) normalized: bool,}為其實現加法…

python位運算符_詳細介紹Python語言中的按位運算符

按位運算符是把數字看作二進制來進行計算的。Python中的按位運算法則如下: 按位與 ( bitwise and of x and y ) & 舉例: 5&3 1 解釋: 101 11 相同位僅為個位1 ,故結果為 1 按位或 ( bitwise or of x and y ) | 舉例&…

c語言代碼測試電腦性能,【圖片】今天寫幾個性能測試,為什么C語言跑得這么慢呢??【c語言吧】_百度貼吧...

該樓層疑似違規已被系統折疊 隱藏此樓查看此樓易言版本……跑100000萬成績不如PHP。。。。.版本 2.程序集 程序集1.子程序 _啟動子程序, 整數型, , 本子程序在程序啟動后最先執行.局部變量 參數, 文本型, , "0".局部變量 to, 整數型.局部變量 fr, 整數型.局部變量 n,…

python find函數 和index的區別_使用帶有find和index的map時Python2和Python3之間的區別...

給定一個模式和一個字符串str,找到str是否遵循相同的模式. 以下是完全匹配,使得在模式中的字母和str中的非空字之間存在雙射. 例子: pattern “abba”,str “dog cat cat dog”應該返回true;狗是一只貓,貓是b,而這些詞形成了abba模式. pattern “abba”,str “dog c…

c語言3368題目,電大《C語言程序設計課程》期末考試復習資料

0993C 評議程序設計A 第 1 頁 共 31 頁C 語言程序設計課程期末復習練習一、單選題 1.在每個C 語言程序中都必須包含有這樣一個函數,該函數的函數名為( )。A. main 2.每個C 語言程序文件的編譯錯誤分為( )類。B. 2 3. 字符串"ab12\n"…

【LeetCode】鏈表精選12題

目錄 快慢指針: 1. 相交鏈表(簡單) 2. 環形鏈表(簡單) 3. 快樂數(簡單) 4. 環形鏈表 II(中等) 5. 刪除鏈表的倒數第 N 個節點(中等) 遞歸迭…

python類的屬性和對象屬性_python 類屬性、對象屬性-阿里云開發者社區

類的普通屬性:  dir(Myclass), 返回一個key列表; Myclass.__dir__,返回一個字典; 1、類的數據屬性; 2、類的方法; 類的特殊屬性: 1、Myclass.__name__  類的名字 2、Myclass.__doc__   類的文檔字符串 3、Mycla…

擊鼓傳花c語言編程題,c語言-第5章 循環程序設計.ppt

《c語言-第5章 循環程序設計.ppt》由會員分享,可在線閱讀,更多相關《c語言-第5章 循環程序設計.ppt(83頁珍藏版)》請在人人文庫網上搜索。1、第5章 循環程序設計,管理學院 電子商務系,2,第5章 循環程序設計,5.1 概述 5.2 while和do while循環 5.3 for循環…