shell编程---变量

目录

1:变量初识

2:预定义变量

3:基本数据类型

4:变量值操作


1:变量初识

顾名思义,变量的定义就是可变的。与其他编程语言的定义是一样的,我就不多说了。(包括它的命名规则)

变量的获取方法有三种:

(1)直接赋值法

name="jkjk"
echo $name;

这里的输出我们用到的是$符号,代表引用值。

 (2)从脚本参数获取,即从命令获取

$0  代表第一个值(这里的第一个值一般都是脚本名字)
$1  代表第二个值(一般这才是真正意义上的第一个值)
$2   第三
$3   第四
...
${10}
...


echo "该脚本的名称是$0";
ehcho "获取的第一个值=$1";

 (3)与用户交互获取变量,即从键盘获取

read -p "请输入:" name

#输入的变量会存储到name中

read -p "请输入" -t 5 -n 2 name

这里的-t 5 表示持续五秒命令,五秒后退出交互
这里的-n 2 表示最多接受两个字符,多出的话自动退出交互

如:写个用户名和密码匹配的小脚本

 2:预定义变量

$*    获取所有的位置参数
$@    获取所有的位置参数
$#    获取位置参数的个数
$$    获取当前shell进程的pid
$?    获取上条执行命令的成功状态,0表示执行成功,非0表示失败

 3:基本数据类型

整型,浮点型,字符串型这些应该很好理解吧,跟你学过的那些编程语言的里面的数据类型其实都是一样的,这里我着重说的是数组类型,shell里面的数组类型,包括了普通数组类型和关联数组类型。

(1)普通数组

定义普通数组,有两种办法

(1)定义的同时复制
hobby=("jk" "oi" "sugd")


(2)先定义,再赋值
declare -a arrt
arrt[0]="aad"
arrt[1]="oop"
arr[t]="nks"

 

 

(2)关联数组

关联数组,嗯....如果你学过c++,那么他和里面的map容器有点类似。

比如说这个例子,一个人的姓名,年龄,性别等我们该如何存取

关联数组的定义

declare -A +数组名

 4:变量值操作

1:获取变量值的长度
x='hello'
echo ${#x}
输出的是:5(是这个字符串hello的长度)

2:切片
切片的定义,学过Python,应该很容易理解
x="hello123"
echo ${x:1:3}
输出:ell

3:截断
url="www.snaa.com.cn"
截断需要用到,#(从左开始截取),%(从右开始截取)
echo ${url#www.}
输出:snaa.com.cn
echo ${url#*.}
输出:snaa.com.cn(默认情况不贪婪,第一个就行)
echo ${url##*.}
输出: cn(两个#表示贪婪)
%从右开始的做法与#相同

4:内容的替换
url="www.snaa.com.cn"
echo ${url/snaa/baidu}
输出:www.baidu.com.cn
url="www.snaa.com.cn"
echo ${url/c/C}
输出:www.snaa.Com.cn(他默认情况下也是不贪的,只是第一个c变大写)
echo ${url//c/C}
输出:www.snaa.Com.Cn

5:变量的替代
(1)${x-临时名称}
未定义时,输出的是临时名称,如果定义的是个空变量,那也是定义了,输出的就是空变量
(2)${x:-临时名称}
当变量未定义或者为空时,都会输出临时变量名称
(3)${x:=新值}
当变量未被定义或者为空时,将变量赋给一个新的值
(4)${x:?提示信息}
当变量为空或者未被定义时返回一个提示信息
(5)${x:+提示}
x没有值,啥也不管,有值的时候,才会输出提示

 

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

菜到极致就是渣

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值