shell传递参数
我们可以在执行shell的时候向脚本传递参数,shell脚本内获取参数的格式为:$n,0代表shell脚本文件名称 ,n代表第一个参数,以此类推.....
实例
以下我们写一个脚本,传三个参数,并分别输出:
#!/bin/bash echo "Shell 传递参数实例!"; echo "执行的文件名:$0"; echo "第一个参数为:$1"; echo "第二个参数为:$2"; echo "第三个参数为:$3";
结果是:
[root@iZ2zecv7bqcpnita13c629Z /]# /bin/sh shell.sh 1 2 3
Shell 传递参数实例!
执行的文件名:shell.sh
第一个参数为:1
第二个参数为:2
第三个参数为:3
另外,还有几个特殊字符用来处理参数:
$# 传递到脚本的参数个数
#!/bin/bash
echo "Shell 传递参数实例!";
echo "执行的文件名:$0";
echo "第一个参数为:$1";
echo "第二个参数为:$2";
echo "第三个参数为:$3";
echo "参数的个数为:$#";
[root@iZ2zecv7bqcpnita13c629Z /]# /bin/sh shell.sh 1 2 3
Shell 传递参数实例!
执行的文件名:shell.sh
第一个参数为:1
第二个参数为:2
第三个参数为:3
参数的个数为:3
$* 以一个单字符串显示所有向脚本传递的参数。
#!/bin/bash
echo "Shell 传递参数实例!";
echo "执行的文件名:$0";
echo "第一个参数为:$1";
echo "第二个参数为:$2";
echo "第三个参数为:$3";
echo "获取所有参数:$*";
[root@iZ2zecv7bqcpnita13c629Z /]# /bin/sh shell.sh 1 2 3
Shell 传递参数实例!
执行的文件名:shell.sh
第一个参数为:1
第二个参数为:2
第三个参数为:3
获取所有参数: 1 2 3
$$ 获取当前脚本的进程id
#!/bin/bash
echo "当前进程ID:$$";
[root@iZ2zecv7bqcpnita13c629Z /]# /bin/sh shell.sh
当前进程ID: 30018
shell数组
数组中可以存放多个值。Bash Shell 只支持一维数组(不支持多维数组),初始化时不需要定义数组大小(与 PHP 类似)。
数组元素的下标由0开始。
Shell 数组用括号来表示,元素用"空格"符号分割开,语法格式如下:
array_name=(value1 ... valuen)
读取数组
读取数组元素值的一般格式是:
${数组名[下标]} 比如:${array_name[0]}
实例
#!/bin/base
array=(A B C D);
echo "第一个元素为:${array[0]}";
echo "第二个元素为:${array[1]}";
echo "第三个元素为:${array[2]}";
echo "第四个元素为:${array[3]}";
结果:
[root@iZ2zecv7bqcpnita13c629Z /]# /bin/sh shell.sh
第一个元素为:A
第二个元素为:B
第三个元素为:C
第四个元素为:D
* 或 @ 获取数组的所有元素
#!/bin/base
array=(A B C D);
echo "数组的所有元素为:${array[*]}";
echo "数组的所有元素为:${array[@]}";
结果:
[root@iZ2zecv7bqcpnita13c629Z /]# /bin/sh shell.sh
数组的所有元素为:A B C D
数组的所有元素为:A B C D
获取数组的长度
#!/bin/base
array=(A B C D);
echo "数组的个数为:${#array[*]}";
echo "数组的个数为:${#array[@]}";
结果:
[root@iZ2zecv7bqcpnita13c629Z /]# /bin/sh shell.sh
数组的个数为:4
数组的个数为:4