shell中变量截取

使用#,%截取

假设变量file=/dir1/dir2/dir3/my.conf.txt,可以用${}分别替换得到不同的值

# #以及##的使用
${file#*/}  删掉第一个 / 及其左边的字符串:dir1/dir2/dir3/my.conf.txt
${file##*/} 删掉最后一个 / 及其左边的字符串:my.conf.txt
${file#*.}  删掉第一个 . 及其左边的字符串:conf.txt
${file##*.} 删掉最后一个 . 及其左边的字符串:txt

# %以及%%的使用
${file%/*}:删掉最后一个  /  及其右边的字符串:/dir1/dir2/dir3
${file%%/*}:删掉第一个 /  及其右边的字符串:(空值)
${file%.*}:删掉最后一个  .  及其右边的字符串:/dir1/dir2/dir3/my.conf
${file%%.*}:删掉第一个  .   及其右边的字符串:/dir1/dir2/dir3/my

#,##,%以及%%含义及记忆方法:

  1. #是从左边开始,去除左边的内容(也只能去除左边的内容)
  2. ##是从右边开始,去除左边的内容(也只能去除左边的内容)
  3. %是从右边开始,去除右边的内容(也只能去除右边的内容)
  4. %%是从左边开始,去除右边的内容(也只能去除右边的内容)
    记忆方法:以$为准,#在$的左边,所以左边开始去除特定符号及左边内容,%在$的右边,所以右边开始去除特定符号及右边边内容。单一符号最小匹配,两个符号最大匹配

使用数字进行截取

${file:0:5}:提取最左边的 5 个字节:/dir1
${file:5:5}:提取第 5 个字节右边的连续5个字节:/dir2

使用${}对变量中字符串进行替换

${file/dir/path}:将第一个dir 替换为path:/path1/dir2/dir3/my.conf.txt
${file//dir/path}:将全部dir 替换为 path:/path1/path2/path3/my.conf.txt

使用${}对变量状态赋值(未设定、空值、非空值)

${file-my.conf.txt} :假如 $file 沒有设定,使用 my.file.txt 作为传回值。(空值及非空值时不作处理)
${file:-my.conf.txt} :假如 $file 沒有设定或为空值,使用 my.file.txt 作为传回值。 (非空值时不作处理)
${file+my.conf.txt} :假如 $file 设为空值或非空值,均使用 my.file.txt 作为传回值。(沒設定时不作处理)
${file:+my.conf.txt} :若 $file 为非空值,使用 my.file.txt 作为传回值。 (未设定及空值时不作处理)
${file=my.conf.txt} :若 $file 沒设定,使用 my.file.txt 作为传回值,同时将 $file 赋值为 my.file.txt 。 (空值及非空值时不作处理)
${file:=my.conf.txt} :若 $file 没设定或为空值,使用 my.file.txt 作为传回值,同时将 $file 赋值为 my.file.txt 。 (非空值时不作处理)
${file?my.conf.txt} :若 $file 没设定,将 my.file.txt 输出至 STDERR(提示信息)。 (空值及非空值时不作处理)
${file:?my.conf.txt} :若 $file 没设定或为空值,则将 my.file.txt 输出至 STDERR(提示信息)。 (非空值时不作处理)
${#var} 可计算出变量值的长度:
${#file} 可得到 27 ,因为/dir1/dir2/dir3/my.conf.txt 是27个字节
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

烤鱼骑不快

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

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

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

打赏作者

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

抵扣说明:

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

余额充值