校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃

主頁 > 知識(shí)庫 > 淺談Shell腳本參數(shù)與交互及常見問題

淺談Shell腳本參數(shù)與交互及常見問題

熱門標(biāo)簽:沈陽ai電銷智能機(jī)器人 電話機(jī)器人對(duì)家居行業(yè)幫助大嗎 蘭州電銷機(jī)器人加盟 電商外呼系統(tǒng)排名 AI智能電銷機(jī)器人壞處 如何申請(qǐng)400的電話呀 地圖標(biāo)注審核周期 合肥電銷外呼系統(tǒng)供應(yīng)商 黑暗之魂3地圖標(biāo)注

一、Shell編程-腳本參數(shù)與交互及常見問題

在執(zhí)行一個(gè)腳本程序時(shí),會(huì)經(jīng)常需要向腳本傳遞一些參數(shù),并根據(jù)輸入的參數(shù)值生成相應(yīng)的數(shù)據(jù)或執(zhí)行特定的邏輯。

1.1 向腳本傳遞參數(shù)

執(zhí)行Shell腳本時(shí)可以帶有參數(shù),在Shell腳本中有變量與之對(duì)應(yīng)進(jìn)行引用。這類變量的名稱很特別,分別是0、1、2、3...被稱為位置變量。

位置變量是由 0 開始,其中 0 變量預(yù)留用來保存實(shí)際腳本的名字,1 變量對(duì)應(yīng)腳本程序的第 1個(gè)參數(shù),依次類推。與其他變量一樣,可以在Shell 中通過“$”符號(hào)來引用位置變量的值。

[root@localhost 20190105]# vi paral.sh
#!/bin/bash
#顯示腳本名
echo 'The script name is '$0
#顯示第1個(gè)參數(shù)
echo 'The 1th parameter is '$1
#顯示第2個(gè)參數(shù)
echo 'The 2th parameter is '$2
#顯示第3個(gè)參數(shù)
echo 'The 3th parameter is '$3
#顯示第4個(gè)參數(shù)
echo 'The 4th parameter is '$4
#顯示第5個(gè)參數(shù)
echo 'The 5th parameter is '$5
#顯示第6個(gè)參數(shù)
echo 'The 6th parameter is '$6
#顯示第7個(gè)參數(shù)
echo 'The 7th parameter is '$7
#顯示第8個(gè)參數(shù)
echo 'The 8th parameter is '$8
#顯示第9個(gè)參數(shù)
echo 'The 9th parameter is '$9
[root@localhost 20190105]# ./paral.sh Ni hao , Nice to meet you !
The script name is ./paral.sh
The 1th parameter is Ni
The 2th parameter is hao
The 3th parameter is ,
The 4th parameter is Nice
The 5th parameter is to
The 6th parameter is meet
The 7th parameter is you
The 8th parameter is !
The 9th parameter is      //空值
[root@localhost 20190105]#

1.2 用戶交互

使用 read 命令可以從鍵盤上讀取數(shù)據(jù),然后賦給指定的變量,在Shell腳本中實(shí)現(xiàn)與用戶的數(shù)據(jù)交互。

read命令的格式

read 變量1 [變量2...]

read命令可以從鍵盤上讀取到多個(gè)變量的值,用戶輸入數(shù)據(jù)時(shí),數(shù)據(jù)間以空格或者 Tab鍵作為分隔。

如果變量個(gè)數(shù)與輸入的數(shù)據(jù)個(gè)數(shù)相同,則依次對(duì)應(yīng)賦值;

如果變量個(gè)數(shù)大于輸入的數(shù)據(jù)個(gè)數(shù),則從左到右對(duì)應(yīng)賦值;如果沒有數(shù)據(jù),則以之對(duì)應(yīng)的變量為空;

如果變量個(gè)數(shù)少于輸入的數(shù)據(jù)個(gè)數(shù),則從左到右對(duì)應(yīng)賦值,最后一個(gè)變量被賦予剩余的所有數(shù)據(jù)。

通過 read 命令讀取鍵盤上輸入的數(shù)據(jù)保存到變量中,同時(shí)把變量值顯示在屏幕上,當(dāng)用戶輸入 exit 時(shí)結(jié)束程序。

[root@localhost 20190105]# vi read1.sh
#!/bin/bash
#初始化變量的值
input1=''                                               #設(shè)置 input1 變量值為空
input2=''                                               #設(shè)置 input2 變量值為空
input3=''                                               #設(shè)置 input3 變量值為空
input4=''                                               #設(shè)置 input4 變量值為空
#until 循環(huán),當(dāng) input1 變量的值為 exit 時(shí)退出該循環(huán)
until [ "$input1" = exit ]
do
       echo 'Please input the values:'
#讀取鍵盤輸入的數(shù)據(jù)
       read input1 input2 input3 input4
#輸入的不是 exit 時(shí)把用戶輸入的數(shù)據(jù)顯示在屏幕上
       if [ "$input1" != exit ]
       then
               echo 'input1: '$input1                  #輸出變量 input1 的值
               echo 'input2: '$input2                  #輸出變量 input2 的值
               echo 'input3: '$input3                  #輸出變量 input3 的值
               echo 'input4: '$input4                  #輸出變量 input4 的值
               echo
#當(dāng)輸入為 exit 時(shí)顯示退出腳本的提示
       else
               echo 'Exit the script.'
       fi
done
[root@localhost 20190105]# chmod +x read1.sh
[root@localhost 20190105]# ./read1.sh
Please input the values:
How do you do           //輸入的數(shù)據(jù)個(gè)數(shù)與變量個(gè)數(shù)相等
input1: How
input2: do
input3: you
input4: do

Please input the values:
Welcome to beijing       //輸入的數(shù)據(jù)個(gè)數(shù)小于變量個(gè)數(shù)
input1: Welcome
input2: to
input3: beijing
input4:

Please input the values:
let's go              //輸入的數(shù)據(jù)個(gè)數(shù)小于變量個(gè)數(shù)
input1: let's
input2: go
input3:
input4:

Please input the values:
Nice to meet you,too!      //輸入的數(shù)據(jù)個(gè)數(shù)大于變量個(gè)數(shù)
input1: Nice
input2: to
input3: meet
input4: you,too!

Please input the values:    //結(jié)束程序
exit
Exit the script.
[root@localhost 20190105]#

運(yùn)行結(jié)果可以看出:

  • 當(dāng)變量個(gè)數(shù)大于輸入的數(shù)據(jù)個(gè)數(shù)時(shí),沒有數(shù)據(jù)與之對(duì)應(yīng)的變量的值為空;
  • 當(dāng)變量個(gè)數(shù)小于輸入的數(shù)據(jù)個(gè)數(shù)時(shí),最后一個(gè)變量會(huì)被賦予剩余的所有數(shù)據(jù);

1.3 特殊變量

特殊變量及說明

 

[root@localhost 20190105]# vi vall.sh
#!/bin/bash
echo 'The value of $# is: '$#           //輸出$#變量的值
echo 'The value of $* is: '$*           //輸出$*變量的值
echo 'The value of $@ is: '$@           //輸出$@變量的值
echo 'The value of $$ is: '$$           //輸出$$變量的值
echo 'The value of $! is: '$!           //輸出$!變量的值
echo 'The value of $- is: '$-           //輸出$-變量的值
echo 'The value of $? is: '$?           //輸出$?變量的值
[root@localhost 20190105]# ./vall.sh how do you do
The value of $# is: 4 //輸出4變量的值
The value of $* is: how do you do //輸出how do you do變量的值
The value of $@ is: how do you do //輸出how do you do變量的值
The value of $$ is: 9040 //輸出9040變量的值
The value of $! is:  //輸出變量的值
The value of $- is: hB //輸出hB變量的值
The value of $? is: 0 //輸出0變量的值
[root@localhost 20190105]#

1.4 Shell編程常見問題

1.4.1 如何屏蔽命令的輸出結(jié)果

Linux 默認(rèn)會(huì)創(chuàng)建一個(gè)設(shè)備文件/dev/null(空設(shè)備),所有輸出到該設(shè)備的信息都會(huì)被屏蔽。通過把命令的輸出重定向到設(shè)備/dev/null,可以屏蔽命令的輸出結(jié)果。

命令 > /dev/null

屏蔽命令的錯(cuò)誤輸出

命令 2> /dev/null

屏蔽命令的正常以及錯(cuò)誤輸出

命令 > /dev/null 2> /dev/null

例如:要在 Shell 代碼中使用 grep 命令查找文件是否存在某個(gè)關(guān)鍵字,但是又希望屏幕 grep 命令的輸出。

if grep jack /etc/passwd > /dev/null
then
 echo "jack found"
fi

如果 /etc/passwd 文件中有 jack 關(guān)鍵字的信息,將會(huì)顯示 jack found,但不會(huì)輸出 grep 命令的執(zhí)行結(jié)果。

1.4.2 如何把一條命令分成多行編寫

Linux 的 Shell 腳本功能非常強(qiáng)大,它允許用戶通過管道方式把多個(gè)命令組合在一起,但因此往往也導(dǎo)致在一行 Shell 腳本代碼中編寫的命令過長(zhǎng),難以閱讀,為了使腳本的結(jié)構(gòu)更加清晰,可以把一行 Shell 腳本代碼分成多行進(jìn)行編寫。

使用兩個(gè)管道符把ps、grep 和 awk 命令組合。

[root@localhost ~]# ps -ef | grep sshd | awk '{print $2}'
4478
12821
22028

在一行代碼中把多個(gè)命令組合在一起,難以閱讀。Shell 提供了一個(gè)特殊字符“\”,可以把一行代碼分成多行進(jìn)行編寫。

[root@localhost ~]# ps -ef | \

> grep ssh | \

> awk '{print $2}'
4478
12821
23375
[root@localhost ~]#

到此這篇關(guān)于淺談Shell腳本參數(shù)與交互及常見問題的文章就介紹到這了,更多相關(guān)Shell腳本參數(shù)與交互內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家! 

您可能感興趣的文章:
  • 淺談shell腳本免交互的四大方法
  • Shell腳本之Expect免交互的實(shí)現(xiàn)
  • Shell腳本中非交互式修改密碼的兩種方法

標(biāo)簽:淮南 黔南 隴南 河北 黔南 通遼 常州 河池

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《淺談Shell腳本參數(shù)與交互及常見問題》,本文關(guān)鍵詞  淺談,Shell,腳本,參數(shù),與,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《淺談Shell腳本參數(shù)與交互及常見問題》相關(guān)的同類信息!
  • 本頁收集關(guān)于淺談Shell腳本參數(shù)與交互及常見問題的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃
    欧美综合欧美视频| 国产精品2024| 精品粉嫩aⅴ一区二区三区四区| 久久精品国产成人一区二区三区| 国产欧美精品一区| 欧美日韩一区二区三区高清 | 91免费精品国自产拍在线不卡| 欧美一区二区在线看| 99久久精品一区| 午夜激情综合网| 久久精品视频在线免费观看| www..com久久爱| 蜜乳av一区二区| 亚洲免费av高清| 精品国产网站在线观看| 一本大道久久a久久精二百| 日本va欧美va瓶| 国产日韩高清在线| 欧美精品一二三区| 色婷婷国产精品| 懂色av中文字幕一区二区三区 | 久久精品国产久精国产爱| 一区二区免费在线| 国产欧美一区二区三区沐欲| 欧美日韩卡一卡二| 波多野结衣中文字幕一区| 国产精品主播直播| 中文字幕一区二区在线播放| 欧美xingq一区二区| 欧美日韩精品一区二区三区蜜桃 | 欧美最猛黑人xxxxx猛交| 国内精品国产成人| 爽爽淫人综合网网站| 亚洲欧美视频在线观看| 国产亚洲人成网站| 欧美理论电影在线| 欧美日韩国产精品自在自线| 99久久99久久精品免费看蜜桃| 久久精品久久精品| 蜜桃视频一区二区三区在线观看| 一区二区三国产精华液| 亚洲欧美怡红院| 久久久精品蜜桃| 欧美国产日本韩| 久久久久久亚洲综合影院红桃| 欧美一区二区三区在线| 色狠狠桃花综合| 欧美影视一区二区三区| 91丨九色丨蝌蚪丨老版| 成人一道本在线| 成人精品在线视频观看| 国产精品66部| 国产1区2区3区精品美女| 国产美女视频一区| 成人福利电影精品一区二区在线观看| 国产在线看一区| 久久99国产精品久久| 久久99精品视频| 成人午夜伦理影院| 成人国产电影网| av亚洲精华国产精华精| 日韩精品一卡二卡三卡四卡无卡| 亚洲va国产天堂va久久en| 亚洲美女免费视频| 一区二区三区高清| 亚洲成av人片在线观看| 亚洲成a人片在线观看中文| 久久97超碰国产精品超碰| 国产自产高清不卡| 国产成人午夜99999| 成人免费视频播放| 99久久精品免费看国产免费软件| 成人高清免费在线播放| 91久久精品一区二区三| 欧美一区二区久久| 久久无码av三级| 国产精品久久综合| 午夜欧美电影在线观看| 精品无人码麻豆乱码1区2区| 国产在线精品免费| kk眼镜猥琐国模调教系列一区二区 | 91蝌蚪porny成人天涯| 在线观看日韩电影| 日韩欧美一卡二卡| 久久精品亚洲一区二区三区浴池| 国产精品美女一区二区三区| 日韩精品电影一区亚洲| 激情综合亚洲精品| 99视频国产精品| 色综合久久中文综合久久97| 日韩欧美中文一区二区| 国产无人区一区二区三区| 中文字幕在线一区二区三区| 美脚の诱脚舐め脚责91| 成人激情av网| 欧美福利视频导航| 亚洲精品一区二区三区四区高清| 亚洲同性gay激情无套| 亚洲成人免费电影| 国产成人免费视| 97se亚洲国产综合自在线 | 亚洲一区av在线| 国产中文字幕精品| 91麻豆swag| 精品国产麻豆免费人成网站| 99精品国产一区二区三区不卡| 日韩你懂的电影在线观看| 欧美性大战xxxxx久久久| 欧美亚洲国产怡红院影院| 日韩一区二区免费在线电影| 国产精品全国免费观看高清 | 亚洲最快最全在线视频| 激情国产一区二区 | 久久久青草青青国产亚洲免观| 一区二区在线观看免费视频播放| 麻豆精品国产91久久久久久| 成人黄色网址在线观看| 久久久久久久久99精品| 香蕉久久一区二区不卡无毒影院| 粉嫩av一区二区三区| 欧美大片在线观看| 亚洲精品高清在线| 从欧美一区二区三区| 精品国产乱码久久久久久1区2区| 亚洲欧洲日韩女同| 韩国三级中文字幕hd久久精品| 91福利在线观看| 亚洲激情五月婷婷| 日本久久一区二区| 一区二区久久久| 日本韩国一区二区| 一区二区三区色| 在线观看不卡一区| 亚洲国产精品一区二区www在线 | 欧美性videosxxxxx| 一区二区国产盗摄色噜噜| 91视频在线看| 伊人一区二区三区| 欧美日韩视频在线第一区| 图片区小说区国产精品视频| 欧美另类久久久品| 久久er精品视频| 久久一留热品黄| 粉嫩绯色av一区二区在线观看| 欧美国产在线观看| 色综合久久久久综合体桃花网| 亚洲视频图片小说| 欧美图片一区二区三区| 日本欧美在线看| 欧美videos大乳护士334| 国产精品乡下勾搭老头1| 日本一区二区视频在线| 99精品在线免费| 亚洲最新视频在线观看| 欧美一区二区三区的| 久久电影网电视剧免费观看| 欧美国产精品专区| 一本在线高清不卡dvd| 亚洲国产视频a| 欧美不卡一区二区三区| 国产精品系列在线观看| 亚洲激情自拍视频| 日韩欧美中文字幕一区| 风间由美一区二区三区在线观看 | 天天综合色天天| 精品粉嫩超白一线天av| youjizz久久| 亚洲国产毛片aaaaa无费看| 欧美日本一区二区| 国产精品 日产精品 欧美精品| 中文字幕欧美一区| 欧美精品第1页| 高清成人在线观看| 偷拍一区二区三区| 精品一区二区三区在线观看国产| 一区二区三区国产精华| 日日欢夜夜爽一区| 日本不卡的三区四区五区| 日韩中文字幕区一区有砖一区| 亚洲va欧美va天堂v国产综合| 日韩av不卡一区二区| 国产乱子伦视频一区二区三区| 久久精品国产澳门| 成人黄色777网| 在线免费一区三区| 日韩欧美的一区二区| 国产视频在线观看一区二区三区| 国产精品久久久久久久午夜片| 日韩美女啊v在线免费观看| 亚洲国产成人av好男人在线观看| 免费一级欧美片在线观看| 国产成人av影院| 欧美在线一二三四区| 欧美电视剧在线观看完整版| 国产亚洲欧美色| 国产成人高清视频| 日本高清视频一区二区| 日本韩国一区二区三区| 欧美亚洲国产bt| 国产亚洲综合在线|