shell的变量替换


一、shell变量替换

语法:

1、$ {变量名 # 匹配规则} 从头开始匹配,最短的数据删除
2、$ {变量名##匹配规则} 从头开始匹配,最长的数据删除
3、$ {变量名 % 匹配规则} 从尾开始匹配,最短的数据删除
4、$ {变量名 %% 匹配规则} 从尾开始匹配,最长的数据删除
5、$ {变量 / 旧字符串/新字符串} 替换变量内的旧字符串为新字符串,只替换第一个
6、$ {变量 // 旧字符串/新字符串} 替换变量内的旧字符串为新字符串,替换全部

[root@iZwz98qdx9tvkj6qz2yq90Z ~]# var_1="l love you"
[root@iZwz98qdx9tvkj6qz2yq90Z ~]# echo $var_1
l love you
[root@iZwz98qdx9tvkj6qz2yq90Z ~]# var2=$ {var_1#*ov}
[root@iZwz98qdx9tvkj6qz2yq90Z ~]# echo $var2
e you
[root@iZwz98qdx9tvkj6qz2yq90Z ~]# var3=${var_1##*o}
[root@iZwz98qdx9tvkj6qz2yq90Z ~]# echo $var3
u
[root@iZwz98qdx9tvkj6qz2yq90Z ~]# var4="i am a girl,you are a boy"
[root@iZwz98qdx9tvkj6qz2yq90Z ~]# echo $var4
i am a girl,you are a boy
[root@iZwz98qdx9tvkj6qz2yq90Z ~]# var5=${var4%a*}
[root@iZwz98qdx9tvkj6qz2yq90Z ~]# echo $var5
i am a girl,you are
[root@iZwz98qdx9tvkj6qz2yq90Z ~]# var6=${var4%%a*}
[root@iZwz98qdx9tvkj6qz2yq90Z ~]# echo $var6
i
[root@iZwz98qdx9tvkj6qz2yq90Z ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
[root@iZwz98qdx9tvkj6qz2yq90Z ~]# var7=${PATH/bin/BIN}
[root@iZwz98qdx9tvkj6qz2yq90Z ~]# echo $var7
/usr/local/sBIN:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
[root@iZwz98qdx9tvkj6qz2yq90Z ~]# var8=${PATH//bin/BIN}
[root@iZwz98qdx9tvkj6qz2yq90Z ~]# echo $var8
/usr/local/sBIN:/usr/local/BIN:/usr/sBIN:/usr/BIN:/root/BIN



  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Shell变量替换是指在命令行中使用特殊的字符来引用变量的值或者对变量进行操作。常见的变量替换有: - `$variable`:用于引用变量的值。 - `${variable}`:用于引用变量的值,并且可以在变量名和花括号之间添加一些修饰符来对变量进行操作。 - `${variable:-default}`:如果变量没有被设置或者为空,则使用默认值。 - `${variable:=default}`:如果变量没有被设置或者为空,则使用默认值,并且将默认值赋值给变量。 - `${variable:+value}`:如果变量被设置,则返回指定的值,否则返回空字符串。 - `${variable:?message}`:如果变量没有被设置或者为空,则输出错误信息并退出。 变量作用域指的是变量的可见范围。在Shell中,变量可以分为局部变量和全局变量。 - 局部变量:只在当前Shell进程中有效,对子进程不可见。可以使用`local`关键字定义局部变量。 - 全局变量:在当前Shell进程及其所有子进程中都有效。可以使用`export`关键字将局部变量转换为全局变量。 使用`export`命令可以将局部变量转换为全局变量,例如: ``` # 定义局部变量 my_var="hello" # 将局部变量转换为全局变量 export my_var # 在子进程中也可以访问全局变量 sh -c 'echo $my_var' ``` 需要注意的是,`export`只会将当前Shell进程中的变量转换为全局变量,对于已经存在的子进程不会生效。如果希望在新的子进程中使用全局变量,可以在调用子进程时使用`env`命令,例如: ``` # 在子进程中也可以访问全局变量 env my_var="$my_var" sh -c 'echo $my_var' ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值