Linux中的shell編程Ⅱ——位置參數、數組、date和cal

一、位置參量

1.簡介

  • 位置參量是一組特殊的內置變量,通常被shell腳本用來從命令行接受參數,或被函數用來保存傳遞給它的參數。
  • 執行shell腳本時,用戶可以通過命令行向腳本傳遞信息,跟在腳本名後面的用空格隔開的每個字符串都稱爲位置參量。
  • 在腳本中使用這些參數時,需通過位置參量來引用。例如:
    $1表示第一個參數,$2表示第二個參數,以此類推。$9
    以後需要用花括號把數字括起來,如第10個位置參量以
    ${10}的方式來訪問。

2.位置參量列表

符號 說明
$0 當前腳本的文件名
$1~$9 第1個到第9個位置參量
${10} 第10個位置參量,類似地,有${11}
$# 位置參量的個數
$* 以單字符串顯示所有位置參量
$@ 未加雙引號時與$*含義相同,加雙引號時有區別
$$ 腳本運行的當前進程號
$! 最後一個後臺運行的進程的進程號
$? 顯示前面最後一個命令的退出狀態。0表示沒有錯誤,其他任何值表示有錯誤。

3.傳遞位置參數

  • 給shell程序傳遞參數
    shell_test.sh this is linux
  • 如果位置參量中含有空格,則需要使用雙引號
    shell_test.sh this is "our linux"
    舉例:
[jingkong@muguangjingkong ~]$ sh test.sh this is linux
: command not found
hello this - is - linux !!!
==========
test.sh
==========
this
==========
3

4.退出碼

  • 任何命令進行時都將返回一個退出狀態。
  • 查看命令: echo $?
  • 應用中通常會在關鍵步驟後判定$?,已確定關鍵步驟的執行是否正常
    尤其調度系統裏需要監控sh返回碼。
  • shell腳本的返回碼取決於最後一個命令的返回碼!
  • 程序控制返回碼: exit N
    • 退出狀態0成功,無錯誤。
    • 退出狀態大於0, 失敗,某處有錯誤。

二、數組

1.數組定義與初始化

數組中可以存放多個值。Bash Shell 只支持一維數組(不支持多維數組),初始化時不需要定義數組大小(與 PHP 類似)。

與大部分編程語言類似,數組元素的下標由0開始。

Shell 數組用括號來表示,元素用"空格"符號分割開,語法格式如下:
arr=(math english chinese)

2.數組的引用與賦值

  • 引用變量:
    ${arr[0]}
  • 數組個數:
    ${#arr[*]}
  • 所有元素:
    ${arr[*]}
  • 賦值
    arr[0]=chemical

3.試驗

[jingkong@muguangjingkong ~]$ arr=(math english chinese)
[jingkong@muguangjingkong ~]$ echo $arr[0]
math[0]
[jingkong@muguangjingkong ~]$ echo ${arr[0]}
math
[jingkong@muguangjingkong ~]$ echo ${#arr[*]}
3
[jingkong@muguangjingkong ~]$ echo ${arr[*]}
math english chinese
[jingkong@muguangjingkong ~]$ a=(1,2,3)
[jingkong@muguangjingkong ~]$ echo ${a[0]}
1,2,3

三、date和cal命令

1.date 命令

1.1 獲取時間

如果在文字接口中想要知道目前Linux系統的時間,那麼就直接在指令列模式輸入date即可顯示:

[jingkong@muguangjingkong ~]$ date
Sun Apr 19 13:11:30 CST 2020

上面顯示的是:星期日,四月十九日,13:11分,30秒,在2020年的CST時區!

1.2 格式化輸出

如果我想要讓這個程序顯示出 2020/04/19
這樣的日期顯示方式呢?那麼就使用date的格式化輸出功能吧

[jingkong@muguangjingkong ~]$ date +%Y/%m/%d
2020/04/19

[jingkong@muguangjingkong ~]$ date +%H:%M
13:14

1.3 利用date指令來取得所需要的檔名

date1=$(date --date='2 days ago' + %Y%m%d) #前兩天的日期
date2=$(date --date='1 days ago' + %Y%m%d) #前一天的日期
date3=$(date +%Y%m%d) #今天的日期

[jingkong@muguangjingkong ~]$ echo ${date3}
20200419

2.cal命令

cal命令: 顯示指定月份的日曆

  • 基本語法爲:
$ cal [month] year
  • 試驗:
cal  # 顯示當前月
cal 2018    # 顯示2018年
cal  6 2018  # 顯示2018年6月
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章