shell(三)

Shell 传递参数

我们可以在执行 Shell 脚本时,向脚本传递参数,脚本内获取参数的格式为:$n。n 代表一个数字,1 为执行脚本的第一个参数,2 为执行脚本的第二个参数,以此类推……
以下实例我们向脚本传递三个参数,并分别输出,其中 $0 为执行的文件名:

#!/bin/bash
# author:菜鸟
# url:www.runoob.com(可以直接拿来测试了)

echo "Shell 传递参数实例!";
echo "执行的文件名:$0";
echo "第一个参数为:$1";
echo "第二个参数为:$2";
echo "第三个参数为:$3";

结果

$ chmod +x test.sh 
$ ./test.sh 1 2 3
Shell 传递参数实例!
执行的文件名:./test.sh
第一个参数为:1
第二个参数为:2
第三个参数为:3

$# 传递到脚本的参数个数
$* 以一个单字符串显示所有向脚本传递的参数。
如"$"用「"」括起来的情况、以"$1 $2 … $n"的形式输出所有参数。
$$ 脚本运行的当前进程ID号
$! 后台运行的最后一个进程的ID号
$@ 与$
相同,但是使用时加引号,并在引号中返回每个参数。
如"$@"用「"」括起来的情况、以"$1" "$2" … "$n" 的形式输出所有参数。
$-
显示Shell使用的当前选项,与set命令功能相同。
$? 显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误。

Shell 数组

Bash Shell 只支持一维数组(不支持多维数组),初始化时不需要定义数组大小(与 c 类似)。
与大部分编程语言类似,数组元素的下标由0开始。
Shell 数组用括号来表示,元素用"空格"符号分割开,语法格式如下:

array_name=(value1 ... valuen)

读取数组
读取数组元素值的一般格式是:

${array_name[index]}

Shell 基本运算符

Shell 和其他编程语言一样,支持多种运算符,包括:

  • 算数运算符
  • 关系运算符
  • 布尔运算符
  • 字符串运算符
  • 文件测试运算符
    原生bash不支持简单的数学运算,但是可以通过其他命令来实现,例如 awk 和 expr,expr 最常用。
    expr 是一款表达式计算工具,使用它能完成表达式的求值操作。
    例如,两个数相加(注意使用的是反引号 ` 而不是单引号 '):
val=`expr 2 + 2`
echo "两数之和为 : $val"

执行脚本,输出结果如下所示:

两数之和为 : 4

两点注意:

  • 表达式和运算符之间要有空格,例如 2+2 是不对的,必须写成 2 + 2,这与我们熟悉的大多数编程语言不一样。
  • 完整的表达式要被 包含,注意这个字符不是常用的单引号,在 Esc 键下边。
Paste_Image.png
Paste_Image.png
Paste_Image.png
Paste_Image.png
Paste_Image.png
Paste_Image.png

推荐阅读更多精彩内容

  • 基础 头文件 #!/bin/bash 或者#!/bin/sh #!约定的标记,如IOS的Import 执行文件时需...
    ZMJun阅读 832评论 1 2
  • 一,shell题记 不懂shell的程序员不是好程序员,学习shell是为了自动化,使用自动化可以非常有效的提高工...
    架构师小秘圈阅读 8,495评论 3 70
  • 2016-2017学年下本三B2班汉语写作课问卷调查分析汇报 问卷说明: 本次小规模调查问卷,目的在于了解本三B2...
    juicebar阅读 61评论 0 0
  • 内容力:价值经济 内容里的强度代表超级IP的生命力关键。内容则通过众媒进行标志性的拓展与聚合:表现形式、生产主体、...
    彪悍的孔玮阅读 368评论 0 50
  • 这个问题,可能独生子女的感受更深刻一些。 小A 这里举一个我的好朋友小A的例子,她就是家里唯一的孩子,和父母的关系...
    维听听阅读 506评论 0 0
  • 好久没有画素描头像了,还是难。造型是个大问题,明暗调子也是难。改天再改了。
    猫恋一夏阅读 126评论 0 2
  • 03013蔡婉华 今天要和大家分享的绘本故事是《最聪明的大野狼》。看到封面的大野狼穿着一身粉红的睡衣和戴了顶粉嫩的...
    Cath2017阅读 384评论 0 0