linux shell ${}简单用法,Shell中$()、$(())和${}的用法

在我们编写shell的时候会有这样一个种场景:

比如:我要备份passwd这个文件,备份到bak_path=”/mnt/sql_bak/” 这个路径下。

且文件名为bak?

习惯上shell是这样:

#!/bin/sh

bak_path="/mnt/bak/"

cp $/etc/passwd $bak_pathbak

但是这样会发现$bak_pathbak 这个系统会把它作为一个变量名的,而不是根据上面变量,然后追加一个bak。实际上想解决这个问题有两种办法,一种 bak_path中最后不要加”/” 即 bak_path=”/mnt/bak”.

然后 cp $/etc/passwd $bak_path/bak 这样即可。第二种就是今天要说的 ${} 。bak_path=”/mnt/bak” 路径还是这个。下面cp $/etc/passwd ${bak_path}bak 这样即可。

第二种场景 必须你shell中要对一个命令的结果做操作这时候就要用到$()

比如:我要对一个进程执行kill,我要关掉pid为1915这个tomcat

shell-tips.html

首先我得先拿到这个pid。ps -ef|grep java|egrep -o “[1-9]{4}”|head -n1 ,然后kill -9 pid 即可。

一条命令就是 kill -9 $(ps -ef|grep java|egrep -o “[1-9]{4}”|head -n1)即可。

补充一种场景比如你要计算25*125等于多少 (类似计算器运算) windows用户会用calc调用系统计算器算。那linux呢 可以用echo $((25*125)) 就可以了。

另外关于${} 这个的用法不简单限制于 变量限制扩展的功能,可以还可以用来切分字符串

比如str=”123″ 我要取23,正向取就是 echo ${str:1:2} 意思是从第一位往后开始不包括第一位,取两位。

再比如str=”abc” 取bc,一样 echo${str:1:2}

或者 echo ${str#*1} echo ${str#*a} 也可以。这个意思就是去掉1 左边包括1;去掉a包括a。跟上面的区别在于上面的 1,2 都是对应字符的下标,而后面这种方法是指定字符串

这里的#可以换成% 又是另一种结果,有兴趣可以查询下。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值