鸟哥私房菜中,对这一内容的描述,简直让人看不懂,好不容易找来文章可以帮助理解下。

linux中对shell变量内容的修改和替换

1.变量内容修改
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/.txt/.cpp} 将.txt取代为.cpp:/dir1/dir2/dir3/my.file.cpp

2.有条件的变量替换

${variable: -value}
变量替换时将使用命令行中定义的默认值,但变量的值并没有因此而改变。
例:$echo Hello $UNAME
结果显示:Hello
$echo Hello ${UNAME: -there}
结果显示:Hello there
$echo $UNAME
结果显示: (空)
$UNAME=John
$echo Hello ${UNAME: -there}
结果显示:Hello John

${variable:=value}
不但使用默认值进行替换,而且将默认值赋给该变量。该形式在变量替换后同时把值value符给变量variable。
例:$echo Hello $UNAME
结果显示:Hello
$echo Hello ${UNAME:=there}
结果显示:Hello there
$echo $UNAME
结果显示:there

${variable: +value}
只有当变量已赋值时才用指定值替换,变量variable已赋值时,其值才用value替换,否则不进行任何替换。
例:$ERROPT=A
$echo ${ERROPT: +"Error tracking is acitive"}
结果显示:Error tracking is acitive
$ERROPT=
$echo ${ERROPT: +"Error tracking is acitive"}
结果显示: (空)

${variable:?message}
使用错误检查的条件进行变量替换,当变量variable已设置时,正常替换。
例:$UNAME=
$echo $ {UNAME:?"UNAME HAS NOT BEEN SET"}
结果显示:UNAME HAS NOT BEEN SET
$UNAME=Stephanie
$echo ${UNAME:?"UNAME HAS NOT BEEN SET"}
结果显示:Stephanie

3.在操作中的使用

集体增加后缀
find . ! -type d |xargs -i mv {} {}.c;
find . ! -type d -exec mv -f {} {}.suf \;

把*.txt 变成 *.cpp
方法一
for file in `find ./ -name "*.txt" -type f`;do mv $file ${file%.*}.cpp;done
方法二
rename .txt .cpp *.txt

转载于:https://blog.51cto.com/whitesock/910061

linux中对shell变量内容的修改和替换相关推荐

  1. linux中添加环境变量

    linux中添加环境变量 一般是在/etc/profile中添加环境,但是建议在/etc/profile.d/下创建一个以.sh结尾的文件 vim /etc/profil.d/my_env.sh 输入 ...

  2. Linux中执行shell脚本的4种方法

    这篇文章主要介绍了Linux中执行shell脚本的4种方法总结,即在Linux中运行shell脚本的4种方法,需要的朋友可以参考下. bash shell 脚本的方法有多种,现在作个小结.假设我们编写 ...

  3. Linux中执行shell脚本的5种方法总结

    Linux中执行shell脚本的4种方法总结,即在Linux中运行shell脚本的4种方法: 方法一:切换到shell脚本所在的目录(此时,称为工作目录)执行shell脚本: 复制代码 代码如下: c ...

  4. linux中设置环境变量_如何在Linux中设置环境变量

    linux中设置环境变量 Wondering how to set environment variables in Linux? This is exactly what we'll be doin ...

  5. Linux中的Shell编程

    1.Shell的概念 shell是一个命令行解释器,它为客户提供了一个Linux内核发送请求一边运行程序界面系统级程序,用汉语可以通过shell启动.挂起.停止甚至编写一些程序. shell还是一个功 ...

  6. Linux基础之shell变量

    Linux基础之shell变量 一.shell变量及其他相关介绍 二.shell变量类型 三.shell变量用法 四.定义命令别名 五.系统变量文件定义说明 一.shell变量及其他相关介绍 1.编译 ...

  7. linux vnc 改端口号,基于Linux中vnc配置端口号的修改方法

    vnc的默认端口是自己配置的,并不是这有一个端口号. 通过打开/etc/sysconfig/vncservers. 这里就配置了2个桌面,一个桌面号是1, 一个是2. 这里的配置的参数 VNCSERV ...

  8. Unix/Linux 中的 shell 机制

    Unix/Linux 中的 shell 机制 对于初次接触 Unix/Linux 系统的同学来说,Unix/Linux 系统与 Windows 系统最大的不同就是,操作 Unix/Linux 系统更多 ...

  9. linux中利用shell脚本条件执行linux命令

    linux中利用shell脚本条件执行命令 在linux环境中,我们总会有一些命令需要经常用,例如经常跳转到某些目录下或者执行某些命令,输入一连串的命令是很烦的,此时我们可以预先写一些脚本然后根据我们 ...

最新文章

  1. 【Git入门之一】Git是神马?
  2. python基础语法总结-Python基础语法总结之逻辑运算
  3. iis php性能优化,IIS 6 的 PHP 最佳配置方法
  4. Windows下的.NET+ Memcached安装
  5. php入门篇-------PHPCMS 入口文件,自动加载系统函数和URL规则
  6. leetcode 1178. 猜字谜(位运算)
  7. php api命名历史,PHP历史上的今天查询api源码
  8. 大数据技术架构_架构大数据图
  9. 幼儿园ppt计算机考试试题,全国“xx杯”计算机应用基础类说课大赛优秀作品:幼儿园里的各类朋友说课课件.ppt...
  10. Makefile 中:= ?= += =的差别 和条件运行
  11. 【Python 04】Python开发环境概述
  12. RTP协议与RTCP协议简介
  13. 增强 扫描王 源码_java,OpenCV简单实现类似“全能扫描王”功能
  14. 外置硬盘一插就卡_为什么电脑一插移动硬盘就卡死了?
  15. Linux 根目录下的文件介绍
  16. 查询建立连接的IP地址
  17. 名企笔试真题精选 (六)
  18. MTK平台H264编码profile_idc和level_idc的小问题
  19. 在Allegro软件中的Groups组创建之后怎么进行打散呢?
  20. sql server中对日期字段值的比较

热门文章

  1. java 内部类 单例_确保对象的唯一性——单例模式 (四):一种更好的单例实现方法(静态内部类)...
  2. [Ext JS 4] 实战之 带week(星期)的日期选择控件
  3. ShardingSphere RAW JDBC 分布式事务 Narayana XA 代码示例
  4. mybatis分页插件_MyBatis 分页插件 5.2.0 发布
  5. echo 多行_分享laravel-echo-server广播服务搭建-Laravel
  6. 控制反转 php,[PHP学习] 控制反转以及依赖注入的日常使用
  7. 计算机电缆检测报告,天联牌计算机电缆详细介绍
  8. jquery $.get和$.post设置请求超时error处理
  9. 高中英语计算机辅助教学例子,计算机辅助教学在英语听力中的运用
  10. 怎样将Excel中的数据导入到SQL Server 2000数据库中