Shell自学二(参数传递和数组)
8.传递参数
1.使用$n来传递参数($0表示文件名)
例子:
echo "执行的文件名:$0";
echo "第一个参数为:$1";
echo "第二个参数为:$3";
./test.sh 1 2
输出结果为:
执行的文件名:test.sh
第一个参数为:1
第二个参数为:2
2.特殊字符处理参数(这里面个别没有测试)
$# : 传递到脚本的参数的个数
$* : 以一个单字符串显示所有向脚本传递的参数("$*"以"$1 $2 ... $n")
$$ : 脚本运行的当前进程的ID号
$! : 后台运行的最后一个进程的ID号
$@ : 与$*相同,但是使用的时候加引号("$@"以"$1" "$2" ... "$n")
$- : 显示Shell使用的当前选项,与set命令功能相同
$? : 显示最后命令的退出状态.0表示没有错误,其他任何值表名有错误
3.例子:
echo "Shell 传递参数实例!";
echo "第一个参数为: $1";
echo "参数的个数为: $#";
echo "传递的参数作为一个字符串显示: $*";
./test.sh 1 2 3
输出结果为:
shell 传递参数实例!
第一个参数: 1
参数个个数为: 3
传递的参数作为一个字符串显示: 1 2 3
4.$*与$@区别:
相同点:都是引用所有参数
不同点:只有在双引号中体现出来.假设在脚本运行时写了三个参数1 2 3 ,则"*"等价与"1 2 3",而"#"等价于"1" "2" "3"
5.实例:
for i in "$*"; do
echo $i
done
for i in "$@"; do
echo $i
done
./test.sh 1 2 3
执行结果:
1 2 3
1
2
3
可以看出@使用for是自带换行
9.数组(Bash Shell只支持一维数组,数组元素的下标由0开始,Shell数组用括号表示,元素用空格分开)
1.语法格式:
array_name=(value1 ... valuen)
例:my-array=(A B "C" D)
2.定义数组
array_name[0]=value0
array_name[1]=value1
array_name[2]=value2
3.读取数组
${array_name[index]}
4.获取数组中的全部元素
${array_name[*]}
${array_name[@]}
5.获取数组的长度
${#array_name[*]}
${#array_name[@]}
做的实例1:
#!/bin/bash
#使用$*输出
echo "使用星号输出:"
for i in "$*"; do
echo $i
done
#使用$@输出
echo "使用第二种方法进行输出:"
for j in "$@"; do
echo $j
done
做的实例2:
#!/bin/bash
#Shell参数传递
echo "----测试参数传递的例子:-----";
echo "执行的文件名为 : $0";
echo "第一个参数为 : $1";
echo "第二个参数为 : $2";
#特殊字符处理参数,$*与$@的不同
echo "----测试特殊字符处理参数:----";
echo "参数的个数为 : $#";
echo "字符串的形式显示 : $*";
echo "字符串的形式显示2 : $@";
#数组的内容
echo "----测试数组的基本使用----"
my_arr=(A B "C" D);
my_arr2[0]=$1;
my_arr2[1]=$2;
my_arr2[2]=$3;
echo "读取数组:${my_arr[3]}";
echo "数组中的全部元素:${my_arr[*]}";
echo "数组中的全部元素2:${my_arr[@]}";
echo "数组my_arr的数组长度为:${#my_arr[*]}";
echo "数组my_arr2的数组长度为:${#my_arr2[@]}";
echo "数组my_arr2的全部元素为:${my_arr2[*]}";
Shell自学二(参数传递和数组)的更多相关文章
- 【转载】Jmeter之Bean shell使用(二)
Jmeter之Bean shell使用(二) 原博文地址为:https://www.cnblogs.com/puresoul/p/4949889.html 其中需要注意的是——三.自定义函数中Bean ...
- 如何在linux Shell脚本里面把一个数组传递到awk内部进行处理
前段时间和几位同事讨论过一个问题:Shell脚本里面怎样把一个数组传递到awk内部进行处理? 当时没有找到方法.前两天在QQ群里讨论awk的时候,无意间又聊起这个话题.机缘巧合之下找到一个思路,特此分 ...
- shell基础二十篇 一些笔记
shell基础二十篇 转自 http://bbs.chinaunix.net/thread-452942-1-1.html 研讨:Bash 内建命令 read (read命令更具体的说明见博客收藏的一 ...
- shell 分割字符串存至数组
shell 分割字符串存至数组 shell编程中,经常需要将由特定分割符分割的字符串分割成数组,多数情况下我们首先会想到使用awk但是实际上用shell自带的分割数组功能会更方便.假如a=”one,t ...
- PHP二维关联数组的遍历方式
采用foreach循环对二维索引数组进行遍历,相对来讲速度更快,效率更高,foreach循环是PHP中专门用来循环数组的.实例也相对简单,多加练习,想清楚程序运行逻辑即可. <?php $arr ...
- shell函数【参数传递及输入输出】&内置函数
Linux——shell脚本基础3:shell函数[参数传递及输入输出]&内置函数 函数定义 1 退出状态 1 参数传递 2 标准IO 2 脚本调试 2 AND&OR 3 内置命令补充 ...
- C++ 指针二维数组, C++二维指针数组笔记
C++ 二维动态数组 一. 已知第一维 #include <iostream> using namespace std; int main(int argc, char const *ar ...
- Task 4.4二维环形数组求最大子矩阵之和
任务: (1)输入一个二维整形数组,数组里有正数也有负数. (2)二维数组首尾相接,象个一条首尾相接带子一样. (3)数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和. (4)求所有子数 ...
- 子串查询(二维前缀数组) 2018"百度之星"程序设计大赛 - 资格赛
子串查询 Time Limit: 3500/3000 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Others)Total Subm ...
随机推荐
- NVL2 这个函数,
NVL2(expr1,expr2,expr3) 如果参数表达式expr1值为NULL,则NVL2()函数返回参数表达式expr3的值:如果参数表达式expr1值不为NULL,则NVL2()函数 ...
- Alpha冲刺No.2
冲刺Day2 一.站立式会议计划 分组讨论研究:较好的掌握MYSQL的使用,以及Android Studio图形化界面设计的学习同步进行. 完成设计数据库架构,进阶版. 登录.注册界面的设计. 能从同 ...
- 201621123050 《Java程序设计》第10周学习总结
1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结异常相关内容. 2. 书面作业 本次PTA作业题集异常 1. 常用异常 结合题集题目7-1回答 1.1 自己以前编写的代码中经常出现 ...
- 20162317袁逸灏 第八周实验报告:实验二 Java面向对象程序设计
20162317袁逸灏 第八周实验报告:实验二 Java面向对象程序设计 实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉S.O.L.I.D原则 ...
- splinter web测试框架
1.安装谷歌浏览器驱动(windows把驱动解压放在Python.exe同级目录即可) http://chromedriver.storage.googleapis.com/index.html 注意 ...
- 玩转Leveldb原理及源码--拙见1
可以说是不知天高地厚.. 可以说是班门弄斧.. 但是,我今天还就这样走了,我喜欢!!!!!! 注:后续文章,限于篇幅,不懂名词都有 紫色+下划线 超链接,有兴趣,可以查阅: 网上关于Leveldb 的 ...
- 从PRISM开始学WPF(三)Prism-Region?
从PRISM开始学WPF(一)WPF? 从PRISM开始学WPF(二)Prism? 从PRISM开始学WPF(三)Prism-Region? 从PRISM开始学WPF(四)Prism-Module? ...
- 偶遇vue-awesome-swiper的坑
最近用vue重构一个移动端的项目,碰到了不少坑,今天拿移动端最著名的轮播插件swiper为例来说,由于这个项目没用UI库,纯手写的样式,沿用老的插件,自然而然的选择了vue-awesome-swipe ...
- nodeJS基于smtp发邮件
邮件的协议smtp是tcp/ip族中的一个协议,所以我们这次考虑使用net模块来发送邮件. const net = require('net') const assert = require('ass ...
- Spark入门(1-1)什么是spark,spark和hadoop
一.Spark是什么? Apache Spark 是专为大规模数据处理而设计的快速通用的计算引擎,可用来构建大型的.低延迟的数据分析应用程序. Spark是UC Berkeley AMP lab (加 ...