博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Shell自学二(参数传递和数组)
阅读量:5272 次
发布时间:2019-06-14

本文共 1783 字,大约阅读时间需要 5 分钟。

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[*]}";

 

转载于:https://www.cnblogs.com/wadmwz/p/8823221.html

你可能感兴趣的文章
设计模式之结构型外观模式
查看>>
【一】MongoDB安装及配置
查看>>
poj 1195Mobile phones
查看>>
QT窗体布局
查看>>
[转发]Dumps of system information with Apple computers
查看>>
十七、IntelliJ IDEA 中的 Maven 项目初体验及搭建 Spring MVC 框架
查看>>
f-basic学习1
查看>>
今天为火狐社区做了点小小的共享,开心一下~~
查看>>
利用跨域资源共享(CORS)实现ajax跨域调用
查看>>
split("")特殊字符
查看>>
linux --> Event Loop介绍
查看>>
PHP Session 封装类
查看>>
JavaEE之反射
查看>>
【转】经验分享:大型高并发高负载网站的系统架构
查看>>
HDU 6060 RXD and dividing (求贡献)
查看>>
java中 immutable,future,nio
查看>>
VMware ESX常用命令
查看>>
golang三方包应该如何安装--在线和离线
查看>>
选择排序
查看>>
鼠标移入移出透明度变化效果
查看>>