shell中的${},##和%%的使用
假设我们定义了一个变量为:
file=/dir1/dir2/dir3/my.file.txt
可以用${ }分别替换得到不同的值:
${file#*/}:删掉第一个 / 及其左边的字符串:dir1/dir2/dir3/my.file.txt
${file##*/}:删掉最后一个 / 及其左边的字符串:my.file.txt
${file#*.}:删掉第一个 . 及其左边的字符串:file.txt
${file##*.}:删掉最后一个 . 及其左边的字符串:txt
${file%/*}:删掉最后一个 / 及其右边的字符串:/dir1/dir2/dir3
${file%%/*}:删掉第一个 / 及其右边的字符串:(空值)
${file%.*}:删掉最后一个 . 及其右边的字符串:/dir1/dir2/dir3/my.file
${file%%.*}:删掉第一个 . 及其右边的字符串:/dir1/dir2/dir3/my
记忆的方法为:
# 是 去掉左边(键盘上#在 $ 的左边)
%是去掉右边(键盘上% 在$ 的右边)
单一符号是最小匹配;两个符号是最大匹配
${file:0:5}:提取最左边的 5 个字节:/dir1
${file:5:5}:提取第 5 个字节右边的连续5个字节:/dir2
也可以对变量值里的字符串作替换:
${file/dir/path}:将第一个dir 替换为path:/path1/dir2/dir3/my.file.txt
${file//dir/path}:将全部dir 替换为 path:/path1/path2/path3/my.file.txt利用 ${ } 还可针对不同的变数状态赋值(沒设定、空值、非空值):
${file-my.file.txt} :假如 $file 沒有设定,則使用 my.file.txt 作传回值。(空值及非空值時不作处理)
${file:-my.file.txt} :假如 $file 沒有設定或為空值,則使用 my.file.txt 作傳回值。 (非空值時不作处理)
${file+my.file.txt} :假如 $file 設為空值或非空值,均使用 my.file.txt 作傳回值。(沒設定時不作处理)
${file:+my.file.txt} :若 $file 為非空值,則使用 my.file.txt 作傳回值。 (沒設定及空值時不作处理)
${file=my.file.txt} :若 $file 沒設定,則使用 my.file.txt 作傳回值,同時將 $file 賦值為 my.file.txt 。 (空值及非空值時不作处理)
${file:=my.file.txt} :若 $file 沒設定或為空值,則使用 my.file.txt 作傳回值,同時將 $file 賦值為 my.file.txt 。 (非空值時不作处理)
${file?my.file.txt} :若 $file 沒設定,則將 my.file.txt 輸出至 STDERR。 (空值及非空值時不作处理)${file:?my.file.txt} :若 $file 没设定或为空值,则将 my.file.txt 输出至 STDERR。 (非空值時不作处理)
${#var} 可计算出变量值的长度:${#file} 可得到 27 ,因为/dir1/dir2/dir3/my.file.txt 是27个字节
转自:http://space.baidu.com.cn/ugo5/blog/item/c550bbc54d1644079c163dbd.html
shell中的${},##和%%的使用相关推荐
- shell中十种实现自加的方法
shell中十种实现自加的方法 let "n = $n + 1" : $((n = $n + 1)) ((n = n+1)) n=$(($n + 1)) : $[ n = $n + ...
- 【linux】shell中整数运算的加、减、乘、除
1.使用双括号"(( ))" shell中变量实现加法的方法 d= $(($d + 2)) 例子如下 #!/bin/bash d=0 echo "d=$d"fo ...
- linux shell $0怎么输出,linux shell中$0,$?,$!等的特殊用法
一.Shell脚本中$0.$?.$!.$$.$*.$#.$@等的意义说明 (1)$$ Shell本身的PID(ProcessID,即脚本运行的当前进程ID号) (2)$! Shell最后运行的后台Pr ...
- Linux从mysql中读取数据_linux shell中读写操作mysql数据库
本文介绍了如何在shell中读写mysql数据库.主要介绍了如何在shell 中连接mysql数据库,如何在shell中创建数据库,创建表,插入csv文件,读取mysql数据库,导出mysql数据库为 ...
- shell中的函数shell中的数组告警系统需求分析
2019独角兽企业重金招聘Python工程师标准>>> 20.16/20.17 shell中的函数 函数的概念 函数就是把一段代码整理到了一个小单元中,并给这个小单元起一个名字,当用 ...
- shell中大于、等于、小于
shell中大于.等于.小于 -eq 等于 -ne 不等于 -gt 大于 -lt 小于 -ge ...
- shell中竖线的作用_如何在 Linux 中安装、配置和使用 Fish Shell?
每个 Linux 管理员都可能听到过 shell 这个词.你知道什么是 shell 吗? 你知道 shell 在 Linux 中的作用是什么吗? Linux 中有多少个 shell 可用? -- Ma ...
- linux的shell的功能,linux shell中${ }的一些特异功能
linux shell中${ }的一些特异功能,这部分内容是shell中的比较经典的部分之一,建议认真学习,深刻体会. 假设我们定义一个变量为: file=/dir1/dir2/dir3/my.fil ...
- linux shell中小数的运算
对于在Shell中进行小数数字的计算,其实方法有很多,但是常用的方法都有其弱点: 1.bc bc应该是最常用的Linux中计算器了,简单方便,支持浮点. root@localhost:~# echo ...
- shell中执行脚本并显示到终端和保存到日志文件中
我们知道,在shell中执行脚本会返回一定信息到终端屏幕上 ,但是有一些特殊情况,如以下情况: 1)显示到终端中 echo "abck" 以上在手动执行脚本中是可以的,如果是编写 ...
最新文章
- priority_queue 结构体的优先级设置
- 算法谜题 php,JavaScript实现N皇后问题算法谜题解答_javascript技巧
- Git 代码防丢指南
- 立足前沿 直击热点 搭建平台,2018中国人工智能大会在深圳拉开帷幕
- oracle之 oracle database vault(数据库保险库)
- 用python画常密度轮廓线,如何使用Matplotlib在极坐标中绘制具有等高线密度线的散点图?...
- springboot几种注入_Spring Boot中使用JdbcTemplate访问数据库
- sshfs的挂载与卸载
- java开发中准则怎么写_Java开发中通用的方法和准则20条
- C++笔记-char*存储的二进制转成long long十进制(读串口的时候经常用到)
- MoCo不适用于目标检测?MSRA提出对象级对比学习的目标检测预训练方法SoCo!性能SOTA!(NeurIPS 2021)...
- CSS快速学习2:选择符权重和字体类属性
- 风好大,我好冷——个人分工理解
- java数组删除数组元素_如何在Java中删除数组元素
- 地理信息科学考计算机二级,全国信息化工程师----GIS应用水平考试大纲(二级)...
- 芯片解密MC9S08DZ16 飞思卡尔系列芯片解密
- 支付宝支付-当面付和App支付
- 异步清零和同步清零的区别
- 物联网 DFrobot 掌控版的使用 智能灯和MQTT
- 指令集与左岸芯慧正式启动“中国农业智能操作系统”共建
热门文章
- linux 扩充db2表空间,如何扩充db2的表空间、加容器等表空间维护操作
- 失望时想起了你是什么歌_你是空你是空是什么歌 你是风你是风什么歌
- python删除重复值所在的行数_python – 在last中删除具有重复值的行
- java高并发实战Netty+协程(Fiber)|系列1|事件驱动模式和零拷贝
- nzhtl1477-ただいま帰りました ( bfs )
- 李宁-2015年7月13日-个人文档
- 关于js的function.来自百度知道的回答,学习了.
- %hd %d %ld %u ......
- 教你怎么买虚拟空间(转)
- 订阅mysql的二进制日志_MySQL二进制日志