`
dengqsintyt
  • 浏览: 291004 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

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个字节

 

分享到:
评论

相关推荐

    linux命令中$0, $#, $?, $$, $@, $数字, $*, !$, $!符号的用法

    在Linux操作系统中,命令行是用户与系统交互的主要方式,而理解这些特殊的变量符号对于编写脚本和自动化任务至关重要。这些符号在Bash shell中扮演着特定的角色,帮助我们更高效地操作和控制命令行环境。 1. **$0**...

    shell 脚本抓取android logcat和kernel log,以及删除旧的log

    在Android系统中,logcat和kernel log是两个重要的日志系统,它们记录了系统的运行状态、错误信息和其他调试数据。shell脚本则是Linux/Android环境中进行自动化任务的强大工具。本篇将详细介绍如何利用shell脚本来...

    shell扫盲篇:Shell常见知识

    接下来,我们通过一个简单的例子来展示如何在Shell脚本中使用上述概念。假设我们要编写一个脚本来检查给定的文件是否为普通文件,如果是,则输出该文件的内容;如果不是,则输出错误消息。我们可以这样写: ```bash...

    shell中的特殊符号

    ### Shell中的特殊符号详解 #### 一、概述 在Shell脚本编程中,存在一系列具有特殊含义的符号,这些符号不仅能够帮助我们更好地控制程序...希望本文能为你提供有用的信息,帮助你在日常工作中更高效地使用Shell脚本。

    shell学习笔记-2018-01-09

    3. **环境变量**:环境变量是由系统定义的,可以在整个会话中使用。常见的环境变量包括: - `$HOME`: 用户的主目录。 - `$USER`: 当前登录用户的用户名。 - `$PS1`: 主提示符。对于超级用户(root),提示符通常是`...

    shell题库.pdf

    - `&&` 和 `||` 是逻辑与和逻辑或操作符,在Shell脚本中用于条件判断。 - `'` 和 `"` 包围的字符串分别代表单引号和双引号字符串,在Shell中有不同的功能。 - `echo` 命令用于在终端输出一行文本。 在文件的内容中...

    shell中第一行#!_bin_bash的作用

    ### Shell脚本中的第一行“#!_bin_bash”的作用详解 #### 一、引言 在Shell脚本编程中,我们经常会看到脚本的第一行是`#!/bin/bash`或`#!/bin/ksh`这样的语句。对于初学者来说,这行代码可能会显得有些神秘,但...

    Bash shell编程参考手册

    《Bash shell编程参考手册》是一份详尽的文档,主要介绍了Bash shell的各种功能与用法,是Linux系统编程的必备指南。这份手册由Chet Ramey(凯斯西储大学)和Brian Fox(自由软件基金会)共同编写,针对的是Bash版本...

    shell 特殊符号含义

    shell 中有许多特殊符号,每个符号都有其特定的含义和应用。本文将总结常见的 shell 特殊符号的含义及应用。 1.井号 (#) - 注释符号 井号 (#) 是 shell 中的注释符号,用于注释命令或文本。在 shell 中,井号 (#) ...

    openEuler中使用shell脚本

    5. **遵循Shell编程规范**:遵循一定的编码风格和最佳实践,如使用有意义的变量名,避免使用未初始化的变量等。 总之,Shell脚本在openEuler中扮演着重要角色,它是系统管理员和开发者的好帮手,通过掌握Shell脚本...

    linux shell脚本攻略

    ### Linux Shell脚本攻略知识点详解 #### 一、Shell脚本基础 1. **Shell简介**: ...通过以上内容的学习和实践,你可以更加熟练地掌握Linux Shell脚本的编写技巧,从而提高工作效率,解决实际工作中的各种问题。

    shell-script

    在多平台环境中,Shell脚本提供了一致性和灵活性,尤其在处理结构化数据(如XML、JSON)或需要图形用户界面的应用中。 Shell脚本是系统工程师和高级程序员不可或缺的技能之一,它不仅是系统自动化的核心路径,还是...

    db2自动备份shell脚本

    4. **命名备份文件**:为备份文件设定有意义的名称,通常包含日期和时间戳,便于管理和追踪。 5. **压缩备份**:使用`gzip`或`bzip2`工具对备份文件进行压缩,以节省存储空间。例如,`gzip <backup_file.db2>`。 6...

    shell学习方法

    掌握Shell编程的基本概念和技术,对于提升工作效率和增强系统的自动化能力具有重要意义。通过本篇内容的学习,希望读者能够对Shell编程有一个全面而深入的理解,并能够在实际工作中灵活运用这些知识点。

    shell脚本实现本地文件与服务器文件同步

    本文通过两个具体示例详细介绍了如何使用Shell脚本实现本地文件与服务器文件的同步及备份功能。通过这些脚本,不仅可以极大地提高工作效率,还可以减少人为错误的发生。对于需要频繁进行文件同步和备份的项目来说,...

    linux中的命令shell与make介绍

    ### Linux中的Shell与Make介绍 #### 一、Shell概述 **1.1 什么是Shell** - **用户与Linux的接口**: Shell充当了用户与Linux操作系统之间的桥梁。 - **命令解释器**: Shell负责解释用户输入的命令,并将其转换为...

    linux shell编程手册

    2. **Shell变量**:Shell允许定义和使用变量来存储数据,如环境变量(如`PATH`,`HOME`),位置参数($1, $2...),特殊变量(如`$#`表示参数个数,`$*`表示所有参数)等。理解变量的声明、赋值及使用规则至关重要。...

    实用的shell学习资料

    Shell是Linux和Unix操作系统中的一种命令解释器,它作为用户与操作系统之间交互的界面,允许用户输入命令并执行。在众多的Shell中,Bash(Bourne Again SHell)是最流行的一个,广泛应用于Linux系统和大多数Unix环境...

Global site tag (gtag.js) - Google Analytics