今天看一个脚本文件的时候有一些地方不太懂,找了一篇文章看了一些,觉得不错,保留下来。
假设我们定义了一个变量为:
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脚本编程中,有一些特殊的变量用于处理命令行参数和程序执行状态。这些变量包括 `$0`, `$#`, `$*`, `$@`, `$?`, 和 `$$`。理解它们的用途和用法是编写高效Shell脚本的关键。 1. **$0**: 这个变量保存了当前...
这些符号在Bash shell中扮演着特定的角色,帮助我们更高效地操作和控制命令行环境。 1. **$0**:这个变量表示当前执行的shell脚本或命令的名称。在脚本中,它通常代表脚本本身的名字,而在命令行中,它是终端会话的...
本文将深入探讨Shell中的函数、硬链接、软链接、权限管理以及特定变量如$1和 $#等概念。 首先,让我们从Shell函数开始。函数在Shell脚本中起到模块化代码的作用,可以重复使用并降低复杂性。定义一个函数的基本语法...
### Shell中的${}、##和%%使用范例详解 #### 概述 在Shell脚本编程中,变量处理是一项非常重要的技术。通过使用特定的语法结构,如`${}`、`##`和`%%`,我们可以对变量进行各种操作,比如字符串截取、替换等。这些...
变量 含义 ...显示shell使用的当前选项 $@ 传递给脚本或函数的所有参数,与$*类似 参考: https://blog.csdn.net/adkada1/article/details/52908686 https://blog.csdn.net/sinat_4272437
在Shell脚本编程中,环境变量扮演着至关重要的角色,它们提供了与系统交互以及控制脚本行为的方法。这里我们将详细探讨在标题和描述中提到的几个特定的环境变量:`$0`, `$?`, `$!`, `$$`, `$*`, `$#`, 和 `$@`。 1....
在Shell脚本编程中,理解和掌握特定的变量是非常重要的。本文将详细介绍几个常用的Shell特殊变量$#、$@、$0、$1、$2的含义及其应用场景。 #### $$ - Shell本身的PID(Process ID) `$$` 表示当前正在执行的Shell...
在Linux系统管理中,Shell脚本扮演着至关重要的角色,它是自动化任务执行的常用工具。本文将详细解析三个实用的Shell脚本,分别...在实际使用中,可以根据具体需求对这些脚本进行修改和扩展,以满足更复杂的任务需求。
### Shell基本使用与系统变量详解 #### 一、Shell系统变量概述 在Shell脚本编程中,系统变量是预定义的环境变量,用于传递或获取有关脚本...掌握这些变量的使用方法能够帮助开发者编写更加灵活和强大的Shell脚本。
`$-` 显示当前Shell使用的选项,这些选项影响Shell的行为。例如: ```bash echo $- # 输出当前Shell选项 ``` 了解并熟练掌握这些 `$` 符号的用法对于编写高效、健壮的Shell脚本至关重要。在实际工作中,它们...
#使用ping命令来判断是否和远程主机互通 ping -c1 $IP &>/dev/null if [ $? -eq 0 ];then echo "当前主机和远程主机$IP是互通的。" else echo "当前主机和远程主机$IP是不通的。" fi 或者 #!/bin/bash # Name:...
Shell 中的变量有系统变量和自定义变量两种。系统变量是作用域是整个操作系统或者整个用户的变量,例如 `$HOME`、`$PWD`、`$SHELL`、`$USER` 等。自定义变量则是作用域是当前 Shell 的变量,需要使用 `变量=值` 的...
在Shell编程中,有许多预定义的特殊变量,它们具有特定的功能和用途。本文将详细解析这些特殊变量的作用及其应用场景。 #### $0:Shell或Shell脚本的名字 - **作用**:`$0` 用于表示当前运行的脚本名称。 - **应用...
- **Shell**: 是一种应用程序,提供用户操作系统的接口,通过Shell将输入的命令和内核通信。需要调用其他应用程序。 - **Shell 脚本**: Shellscript,是一种为Shell编写的脚本程序。 ##### 2.2 脚本解释器 - **...
在shell脚本中,使用shell运算符可以实现各种计算、比较和逻辑判断等操作,使得shell脚本更加灵活和强大。 此外,shell还提供了进制转换的功能,可以将数字从一种进制转换到另一种进制,例如: $ echo $((013)) # ...
Shell 变量可以在 Shell 脚本中使用,以便更方便地执行任务和管理系统。例如: ```bash #!/bin/bash printf "The complete list is %s\n" "$*" printf "The complete list is %s\n" "$@" printf "The complete list ...
shell时间shell 日期 直接调用系统变量 获取今天时期:`date +%Y%m%d` 或 `date +%F` 或 $(date +%y%m%d) 获取昨天时期:`date -d yesterday +%Y%m%d` 获取前天日期:`date -d -2day +%Y%m%d` 依次类推比如获取...
Shell脚本中还可以使用以下命令或结构来操作和利用变量: - `echo`:用于输出变量的值。 - `export`:用于导出环境变量,使其可以在子进程中使用。 - `readonly`:用于声明只读变量。 - `unset`:用于取消变量的...