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月
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章