茂名企业自助建站,阿里云 企业网站,网站被收录又被取消了,客户问 你们网站怎么做的前言
本章介绍Shell的传递参数和数组。
Shell 传递参数
我们可以在执行 Shell 脚本时#xff0c;向脚本传递参数#xff0c;脚本内获取参数的格式为#xff1a;$n。n 代表一个数字#xff0c;1 为执行脚本的第一个参数#xff0c;2 为执行脚本的第二个参数#xff0c;…前言
本章介绍Shell的传递参数和数组。
Shell 传递参数
我们可以在执行 Shell 脚本时向脚本传递参数脚本内获取参数的格式为$n。n 代表一个数字1 为执行脚本的第一个参数2 为执行脚本的第二个参数以此类推……
实例 以下实例我们向脚本传递三个参数并分别输出其中 $0 为执行的文件名包含文件路径
实例
#!/bin/bash
# author:csdn教程
# url:www.csdn.comecho 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号$与∗相同但是使用时加引号并在引号中返回每个参数。br如*相同但是使用时加引号并在引号中返回每个参数。br如∗相同但是使用时加引号并在引号中返回每个参数。br如“用「”」括起来的情况、以$1 “2…2 … 2…n” 的形式输出所有参数。$-显示Shell使用的当前选项与set命令功能相同。$?显示最后命令的退出状态。0表示没有错误其他任何值表明有错误。
实例
#!/bin/bash
# author:csdn教程
# url:www.csdn.comecho Shell 传递参数实例;
echo 第一个参数为$1;echo 参数个数为$#;
echo 传递的参数作为一个字符串显示$*;执行脚本输出结果如下所示
$ chmod x test.sh
$ ./test.sh 1 2 3
Shell 传递参数实例
第一个参数为1
参数个数为3
传递的参数作为一个字符串显示1 2 3$* 与 $ 区别
相同点都是引用所有参数。不同点只有在双引号中体现出来。假设在脚本运行时写了三个参数 1、2、3则 * 等价于 “1 2 3”传递了一个参数而 等价于 “1” “2” “3”传递了三个参数。
实例
#!/bin/bash
# author:csdn教程
# url:www.csdn.comecho -- \$* 演示 ---
for i in $*; doecho $i
doneecho -- \$ 演示 ---
for i in $; doecho $i
done执行脚本输出结果如下所示
$ chmod x test.sh
$ ./test.sh 1 2 3
-- $* 演示 ---
1 2 3
-- $ 演示 ---
1
2
3Shell 数组
数组中可以存放多个值。Bash Shell 只支持一维数组不支持多维数组初始化时不需要定义数组大小与 PHP 类似。
与大部分编程语言类似数组元素的下标由 0 开始。
Shell 数组用括号来表示元素用空格符号分割开语法格式如下
array_name(value1 value2 ... valuen)实例 创建一个简单的数组 my_array
实例
#!/bin/bash
# author:csdn教程
# url:www.csdn.commy_array(A B C D)我们也可以使用数字下标来定义数组:
实例
array_name[0]value0
array_name[1]value1
array_name[2]value2读取数组
读取数组元素值的一般格式是
${array_name[index]}以下实例通过数字索引读取数组元素
实例
#!/bin/bash
# author:csdn教程
# url:www.csdn.commy_array(A B C D)echo 第一个元素为: ${my_array[0]}
echo 第二个元素为: ${my_array[1]}
echo 第三个元素为: ${my_array[2]}
echo 第四个元素为: ${my_array[3]}执行脚本输出结果如下所示
$ chmod x test.sh
$ ./test.sh
第一个元素为: A
第二个元素为: B
第三个元素为: C
第四个元素为: D关联数组
Bash 支持关联数组可以使用任意的字符串、或者整数作为下标来访问数组元素。
关联数组使用 declare 命令来声明语法格式如下
declare -A array_name-A 选项就是用于声明一个关联数组。
关联数组的键是唯一的。
以下实例我们创建一个关联数组 site并创建不同的键值
实例
declare -A site([google]www.google.com [csdn]www.csdn.com [taobao]www.taobao.com)我们也可以先声明一个关联数组然后再设置键和值
实例
declare -A site
site[google]www.google.com
site[csdn]www.csdn.com
site[taobao]www.taobao.com也可以在定义的同时赋值
访问关联数组元素可以使用指定的键格式如下
array_name[index]以下实例我们通过键来访问关联数组的元素
实例
declare -A site
site[google]www.google.com
site[csdn]www.csdn.com
site[taobao]www.taobao.comecho ${site[csdn]}执行脚本输出结果如下所示
www.csdn.com获取数组中的所有元素
使用 或 * 可以获取数组中的所有元素例如
实例
#!/bin/bash
# author:csdn教程
# url:www.csdn.commy_array[0]A
my_array[1]B
my_array[2]C
my_array[3]Decho 数组的元素为: ${my_array[*]}
echo 数组的元素为: ${my_array[]}
执行脚本输出结果如下所示$ chmod x test.sh
$ ./test.sh
数组的元素为: A B C D
数组的元素为: A B C D
实例
declare -A site
site[google]www.google.com
site[csdn]www.csdn.com
site[taobao]www.taobao.comecho 数组的元素为: ${site[*]}
echo 数组的元素为: ${site[]}执行脚本输出结果如下所示
$ chmod x test.sh
$ ./test.sh
数组的元素为: www.google.com www.csdn.com www.taobao.com
数组的元素为: www.google.com www.csdn.com www.taobao.com在数组前加一个感叹号 ! 可以获取数组的所有键例如
实例
declare -A site
site[google]www.google.com
site[csdn]www.csdn.com
site[taobao]www.taobao.comecho 数组的键为: ${!site[*]}
echo 数组的键为: ${!site[]}执行脚本输出结果如下所示
数组的键为: google csdn taobao
数组的键为: google csdn taobao获取数组的长度
获取数组长度的方法与获取字符串长度的方法相同例如
实例
#!/bin/bash
# author:csdn教程
# url:www.csdn.commy_array[0]A
my_array[1]B
my_array[2]C
my_array[3]Decho 数组元素个数为: ${#my_array[*]}
echo 数组元素个数为: ${#my_array[]}执行脚本输出结果如下所示
$ chmod x test.sh
$ ./test.sh
数组元素个数为: 4
数组元素个数为: 4字符串转数组
#!/bin/bashwordsaaa bbb ccc#字符串转数组空格是分隔符
array(${words// / })
#打印数组最后一个成员
echo ${array[${#array[*]}-1]}
#打印数组长度
echo ${#array[*]}#字符串不转换为数组在循环实现以空格为分隔符打印每个成员
for word in ${words}; doecho ${word}
done运行结果
ccc3aaabbbccc