好湿?好紧?好多水好爽自慰,久久久噜久噜久久综合,成人做爰A片免费看黄冈,机机对机机30分钟无遮挡

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

淺談Shell腳本參數與交互及常見問題

熱門標簽:沈陽ai電銷智能機器人 電話機器人對家居行業幫助大嗎 蘭州電銷機器人加盟 電商外呼系統排名 AI智能電銷機器人壞處 如何申請400的電話呀 地圖標注審核周期 合肥電銷外呼系統供應商 黑暗之魂3地圖標注

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

在執行一個腳本程序時,會經常需要向腳本傳遞一些參數,并根據輸入的參數值生成相應的數據或執行特定的邏輯。

1.1 向腳本傳遞參數

執行Shell腳本時可以帶有參數,在Shell腳本中有變量與之對應進行引用。這類變量的名稱很特別,分別是0、1、2、3...被稱為位置變量。

位置變量是由 0 開始,其中 0 變量預留用來保存實際腳本的名字,1 變量對應腳本程序的第 1個參數,依次類推。與其他變量一樣,可以在Shell 中通過“$”符號來引用位置變量的值。

[root@localhost 20190105]# vi paral.sh
#!/bin/bash
#顯示腳本名
echo 'The script name is '$0
#顯示第1個參數
echo 'The 1th parameter is '$1
#顯示第2個參數
echo 'The 2th parameter is '$2
#顯示第3個參數
echo 'The 3th parameter is '$3
#顯示第4個參數
echo 'The 4th parameter is '$4
#顯示第5個參數
echo 'The 5th parameter is '$5
#顯示第6個參數
echo 'The 6th parameter is '$6
#顯示第7個參數
echo 'The 7th parameter is '$7
#顯示第8個參數
echo 'The 8th parameter is '$8
#顯示第9個參數
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 命令可以從鍵盤上讀取數據,然后賦給指定的變量,在Shell腳本中實現與用戶的數據交互。

read命令的格式

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

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

如果變量個數與輸入的數據個數相同,則依次對應賦值;

如果變量個數大于輸入的數據個數,則從左到右對應賦值;如果沒有數據,則以之對應的變量為空;

如果變量個數少于輸入的數據個數,則從左到右對應賦值,最后一個變量被賦予剩余的所有數據。

通過 read 命令讀取鍵盤上輸入的數據保存到變量中,同時把變量值顯示在屏幕上,當用戶輸入 exit 時結束程序。

[root@localhost 20190105]# vi read1.sh
#!/bin/bash
#初始化變量的值
input1=''                                               #設置 input1 變量值為空
input2=''                                               #設置 input2 變量值為空
input3=''                                               #設置 input3 變量值為空
input4=''                                               #設置 input4 變量值為空
#until 循環,當 input1 變量的值為 exit 時退出該循環
until [ "$input1" = exit ]
do
       echo 'Please input the values:'
#讀取鍵盤輸入的數據
       read input1 input2 input3 input4
#輸入的不是 exit 時把用戶輸入的數據顯示在屏幕上
       if [ "$input1" != exit ]
       then
               echo 'input1: '$input1                  #輸出變量 input1 的值
               echo 'input2: '$input2                  #輸出變量 input2 的值
               echo 'input3: '$input3                  #輸出變量 input3 的值
               echo 'input4: '$input4                  #輸出變量 input4 的值
               echo
#當輸入為 exit 時顯示退出腳本的提示
       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           //輸入的數據個數與變量個數相等
input1: How
input2: do
input3: you
input4: do

Please input the values:
Welcome to beijing       //輸入的數據個數小于變量個數
input1: Welcome
input2: to
input3: beijing
input4:

Please input the values:
let's go              //輸入的數據個數小于變量個數
input1: let's
input2: go
input3:
input4:

Please input the values:
Nice to meet you,too!      //輸入的數據個數大于變量個數
input1: Nice
input2: to
input3: meet
input4: you,too!

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

運行結果可以看出:

  • 當變量個數大于輸入的數據個數時,沒有數據與之對應的變量的值為空;
  • 當變量個數小于輸入的數據個數時,最后一個變量會被賦予剩余的所有數據;

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 如何屏蔽命令的輸出結果

Linux 默認會創建一個設備文件/dev/null(空設備),所有輸出到該設備的信息都會被屏蔽。通過把命令的輸出重定向到設備/dev/null,可以屏蔽命令的輸出結果。

命令 > /dev/null

屏蔽命令的錯誤輸出

命令 2> /dev/null

屏蔽命令的正常以及錯誤輸出

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

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

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

如果 /etc/passwd 文件中有 jack 關鍵字的信息,將會顯示 jack found,但不會輸出 grep 命令的執行結果。

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

Linux 的 Shell 腳本功能非常強大,它允許用戶通過管道方式把多個命令組合在一起,但因此往往也導致在一行 Shell 腳本代碼中編寫的命令過長,難以閱讀,為了使腳本的結構更加清晰,可以把一行 Shell 腳本代碼分成多行進行編寫。

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

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

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

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

> grep ssh | \

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

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

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

標簽:淮南 黔南 隴南 河北 黔南 通遼 常州 河池

巨人網絡通訊聲明:本文標題《淺談Shell腳本參數與交互及常見問題》,本文關鍵詞  淺談,Shell,腳本,參數,與,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《淺談Shell腳本參數與交互及常見問題》相關的同類信息!
  • 本頁收集關于淺談Shell腳本參數與交互及常見問題的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 特一级黄色大片| 娇妻帮邻居许老勃起| 姝姝的白丝又湿又紧| 巨胸喷奶水视频www网免费| 高贵的美妇在胯下| 男男高h黄np| yy6080午夜福利理论片APP| 变态冷s酒店调教大学生| 欧美系列在线播放| www.色综合.com| 美女裸体无遮挡奶头免费网站| 欧美精品AV二区不卡老司机福利| 欧美性色生活片天天看99顶级| 欧美二级在线观看免费| 久久久精品欧美潮喷三级| 男女一级免费视频| 祝福电影| 亚洲成a人v欧美综合天堂下载| 无码做爰XXXⅩOOO情侣酒店 | 亚洲色图50p| 午夜看片在线观看| 波多野42部无码喷潮BT种子| 《美容室:特殊服务6》在线观看 | 天天影视插插插| 同桌揉我下面?啊?嗯小说| 国产精品无码AV在线有声小说| 美女的积积| 我和麻麻在车后排乱小说| **n0917w奸本多翼| 国产亲子乱A片免费视频| 很污很黄很肉尺寸大动态图| 夜夜爽爽爽| 女人扒开腿让男人捅| 老师?好爽?进来了114AV| 国产在线播放一区| 99国产情在线视频| 超脱电影免费观看完整版高清| 日韩欧美午夜成人无码 | 久久99精品久久久久久综合| 让女人受不了19种新姿势| 久久精品国产午夜伦班片|