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
$#:表示传进来脚本的参数个数