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自学二(参数传递和数组)的更多相关文章

  1. 【转载】Jmeter之Bean shell使用(二)

    Jmeter之Bean shell使用(二) 原博文地址为:https://www.cnblogs.com/puresoul/p/4949889.html 其中需要注意的是——三.自定义函数中Bean ...

  2. 如何在linux Shell脚本里面把一个数组传递到awk内部进行处理

    前段时间和几位同事讨论过一个问题:Shell脚本里面怎样把一个数组传递到awk内部进行处理? 当时没有找到方法.前两天在QQ群里讨论awk的时候,无意间又聊起这个话题.机缘巧合之下找到一个思路,特此分 ...

  3. shell基础二十篇 一些笔记

    shell基础二十篇 转自 http://bbs.chinaunix.net/thread-452942-1-1.html 研讨:Bash 内建命令 read (read命令更具体的说明见博客收藏的一 ...

  4. shell 分割字符串存至数组

    shell 分割字符串存至数组 shell编程中,经常需要将由特定分割符分割的字符串分割成数组,多数情况下我们首先会想到使用awk但是实际上用shell自带的分割数组功能会更方便.假如a=”one,t ...

  5. PHP二维关联数组的遍历方式

    采用foreach循环对二维索引数组进行遍历,相对来讲速度更快,效率更高,foreach循环是PHP中专门用来循环数组的.实例也相对简单,多加练习,想清楚程序运行逻辑即可. <?php $arr ...

  6. shell函数【参数传递及输入输出】&内置函数

    Linux——shell脚本基础3:shell函数[参数传递及输入输出]&内置函数 函数定义 1 退出状态 1 参数传递 2 标准IO 2 脚本调试 2 AND&OR 3 内置命令补充 ...

  7. C++ 指针二维数组, C++二维指针数组笔记

    C++ 二维动态数组 一. 已知第一维 #include <iostream> using namespace std; int main(int argc, char const *ar ...

  8. Task 4.4二维环形数组求最大子矩阵之和

    任务: (1)输入一个二维整形数组,数组里有正数也有负数. (2)二维数组首尾相接,象个一条首尾相接带子一样. (3)数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和. (4)求所有子数 ...

  9. 子串查询(二维前缀数组) 2018"百度之星"程序设计大赛 - 资格赛

    子串查询 Time Limit: 3500/3000 MS (Java/Others)    Memory Limit: 262144/262144 K (Java/Others)Total Subm ...

随机推荐

  1. wpf研究之道-datagrid控件(1)

    "想要说些什么 又不知从何说起",每当想要写一些关于wpf的文章,总是沉思良久,怕自己写不好.今天我想要说的是wpf中datagrid控件.我们先来看看它在整个类的层次结构:   ...

  2. UWP 使用Windows.Media.FaceAnalysis.FaceDetector检测人脸

    话说现在检测人脸的技术有很多.有在线AI服务,比如Megvii Face++,Microsoft Cognitive Services,Tencent AI等等.还有本地的库实现的,比如OpenCV. ...

  3. 四则运算----C++版

    一.设计思想 因java中已做过,就是简单的将java中的语句调换为C++的语句. 二.代码 #include<iostream.h> #include<Stdlib.h> v ...

  4. 个人作业2:QQ音乐APP案例分析

    APP案例分析 QQ音乐 选择理由:毕竟作为QQ音乐九年的资深老用户以及音乐爱好者 第一部分 调研 1.第一次上手的体验    我算是很早期的QQ音乐的用户,用QQ音乐七八年,除了体验各方面还不错之外 ...

  5. 2017 国庆湖南 Day6

    期望得分:100+100+60=260 实际得分:100+85+0=185 二分最后一条相交线段的位置 #include<cstdio> #include<iostream> ...

  6. SpaceVim - 让你的vim变得更加高效和强大

    SpaceVim 中文手册 项 目 主 页: https://spacevim.org Github 地址 : https://github.com/SpaceVim/SpaceVim SpaceVi ...

  7. js进度条小事例

    <style> #div1{width: 500px;height: 20px;border: 1px solid gray;} #div2{height: 20px;width: 0px ...

  8. LDAP是什么

    LDAP的英文全称是Lightweight Directory Access Protocol,一般都简称为LDAP.LDAP目录服务是一种特殊的数据库系统,其专门针对读取,浏览和搜索操作进行了特定的 ...

  9. .net 4种单例模式

    转载: https://www.cnblogs.com/dreign/archive/2012/05/08/2490212.html using System; using System.Collec ...

  10. 谈谈自己的理解:python中闭包,闭包的实质

    闭包这个概念好难理解,身边朋友们好多都稀里糊涂的,稀里糊涂的林老冷希望写下这篇文章能够对稀里糊涂的伙伴们有一些帮助~ 请大家跟我理解一下,如果在一个函数的内部定义了另一个函数,外部的我们叫他外函数,内 ...