shell脚本知识梳理(一)之变量

2018/11/19 posted in  shell脚本

shell变量

一:定义变量

name="rjb";

  • 定义变量时候,变量名直接定义
  • 变量名和=号之间不能有空格
  • 变量名首位不能是数字

删除变量

unset name

变量类型

  • 本地变量
    整个bash进程可以使用,name="rjb";

  • 局部变量
    当前的代码段,local name="qing";(local是关键字)

  • 环境变量
    当前shell的进程以及子进程export name="raojunbo";
    export可新增,修改或删除环境变量,供后续执行的程序使用。export的效力仅及于该次登陆操作。也即是

  • 位置变量:

//位置变量示例
name=${1};age=${2}; echo "姓名:${name} 年龄:${age}``;
执行脚本时./hello.sh  rjb  28

如下是位置变量

${0}是脚本文件名,参数是从1开始的,且在执行脚本时,参数与参数之间要有空格
${?} 表示返回上一个命令执行状态的反回值,0表示成功,1表示执行结果,2然后是错误状态吗
${#} 表示参数的个数
${*} 表示参数列表,将所有的参数组成一个字符串
${@} 表示参数列表
${$} 获取当前shell的进程id
特别说明: $?,$#,$*,$@,$$,$raojunbo 。不过书写成加{}更好区分。

使用变量

${变量名} 或者$变量名

二:字符串

区别单引号与双引号字符串

单引号里都是原样输出,双引号里

字符串拼接

   name="rjb";
    age=100;
    info="姓名:${name}年龄:${age}";
    echo $info;

    方式二
    
    
    name="rjb";
    age=100;
    info="姓名"${name}"年龄"${age};
     echo $info;    

字符串长度 ${#变量}

name="raojunbo";
echo ${#name};

字符串截取 ${变量:开始位置:结束位置}

//从1到3的子串
 name="raojunbo";   
 ${name:1:3}  
 
//从1开始直到最后
     name="raojunbo";
    ${name:1}

字符串的操作是一个比价大的话题。在具体使用时可以查相关文档。知道基本的用法就可以了。

三:数组

初始化方式

方式一:name=("404","andy","全班");
方式二:
name=();
name[0]="404"
name[1]="anddy"
name[2]="柚子

name=();
name[0]="1";
name[1]="2";

读取数组

name={"404","anddy","全部"}
echo ${name[1]}
echo ${name[@]}<!--输出所有数据-->

特别说明

@ 是一个一个输出
* 是组成一个字符串后输出 

数组长度

${#name[@]}表示取数组的全部个数,#表示取数目

#表示取长度或者数目

参数的传递

./文件名.sh 参数1 参数2 参数3

${0};表示文件名称
${1};表示参数1
${2};表示参数2
$#:表示传进来脚本的参数个数