linux下变量使用和扩展

变量定义

格式:变量名=变量值       

注意:1、’‘="两边不能有空格  

2、变量值,linux都会认为是字符串,如果有字符有空格,需要用双引号或单引号括起  

 3、变量值,双引号括起,会解释变量;而单引号不会,只会原样输出

eg:var="hello  world"

变量调用     

格式: $变量名 或者 ${变量名}

注意:1、如果变量名后还有其他字符串,需要将变量名用大括号{}括起来

eg:echo $var     输 出  hello world

       echo ${var}_green     输出 hello world_green

提高输出变量值的值,即将变量值作为下一个变量的名字(输出下一个变量的值)

abc_key="hello"
Informix=abc
temp=${Informix}_key
echo ${temp}
echo ${!temp}

 

export设置环境变量

格式:export   变量名=变量值

注意:export的效力仅及于该次登陆操作,如果希望长久有效,可以将其写在/etc/profile文件中(此文件是系统启动后自动加载的),或者将其写在/home/用户名/.bash_profile文件中(此文件是此用户登陆都自动加载的)。

命令:export  列出当前系统中的环境变量(包括临时的环境变量)

变量取消

格式:unset  变量名         eg:unset var

unset var=      (表示变量存在,但其值是null) 

变量扩展

测试变量是否为空    

方法1、[  -n $变量名  ]    变量为空,返回true,否则为false

方法2、${#变量名}     获取变量值的长度,为0,变量为空

var=
if [ -n $var ];then
echo "var is null"
else
echo "var is not null"
fi
# 输出 :var is null
echo ${#var}
#输出 :0
取字符串切片

格式1:${变量名:位置起点}

解释:由指定的字符串位置开始,截取字符串到字符串结束的位置

格式2:${变量名:位置起点:截取字符串长度}

解释:由指定的字符串位置开始,截取指定长度的字符串

abc_key="hello"
Informix=abc
temp=${Informix}_key
echo ${temp}
echo ${!temp}
输出 :hello
计算字符串长度

格式1:${#变量名}

格式2:echo ${变量名} | wc -c           统计的是字节数比字符串长度多1(可能是结束符)

格式3:expr length  "${变量名}"

# echo ${#var}
15
# echo ${var} | wc -c
16
# expr length "$var"
15
字符串替换

格式1:${变量/ 样式 / 替换的字符串}    替换第一个与样式匹配的,样式可以包含正则表达式(下面都可以)

格式2:${变量// 样式 / 替换的字符串}   替换全部匹配的

# var="da :: bai :: ni :: hao"
# echo $var
da :: bai :: ni :: hao
# echo ${var/::/_}
da _ bai :: ni :: hao
# echo ${var//::/_}
da _ bai _ ni _ hao

补充:

语法用途
${变量 /# 样式 / 替换的字符串}替换第一个,但是从变量值开头首字符开始匹配,不匹配,不替换
${变量 /% 样式 / 替换的字符串}替换第一个,但是从变量值尾部尾字符开始匹配,不匹配,不替换
# echo ${var}
da :: bai :: ni :: hao
# echo ${var/#da/hh}
hh :: bai :: ni :: hao
# echo ${var/#::/hh}

删除字符串

格式1:${变量 / 样式/}    删除第一个与样式匹配

格式2:${变量 // 样式/}   删除全部匹配的

其实就是字符串替换搁置中替换后的字符串变为空。

语法用途
${变量 /# 样式/}删除第一个,但是从变量值开头首字符开始匹配,不匹配,不删除
${变量 /% 样式/}删除第一个,但是从变量值尾部尾字符开始匹配,不匹配,不删除
# echo ${var}
da :: bai :: ni :: hao
# echo ${var/#::/}
da :: bai :: ni :: hao
# echo ${var/#da/}
:: bai :: ni :: hao
其他
语法用途
${变量#样式}与前面对比,删除最短的匹配,首字符不匹配就不删除了
${变量##样式}与前面对比,删除最长的匹配,首字符不匹配就不删除了
${变量%样式}与后面对比,删除最短的匹配,首字符不匹配就不删除了
${变量%%样式}与后面对比,删除最短的匹配,首字符不匹配就不删除了
# var="/home/dxx/test/mypro"
# echo ${var#*/}
home/dxx/test/mypro
# echo ${var##*/}
mypro
# echo ${var#bai*/}
/home/dxx/test/mypro
提取指定变量名

格式:${!开头字符串@}  或者  ${!开头字符串*}
把所有一指定字符串开头的变量名列出

filename="ntupdate"
dir="adsf"
dir_file="12313"
echo ${!di@}        

输出:dir dir_file
取命令参数
语法解释
$0命令名字
$1-$n第一个到第n个的参数
$*所有的位置参数 
$#位置参数的个数
$?上一个命令执行的结果    0 成功,非0有误
$$目前的进程编号
${@:起点}由起点开始,取得后面的位置参数
${@:起点:个数}由起点开始,取得后面指定个数的位置参数

 

转载于:https://my.oschina.net/u/1783725/blog/738179

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值