shell语法之${},``,$(),$(()) - - 用法
shell 用法 语法
2023-09-11 14:17:06 时间
一、${}
1、变量截取、替换
定义一个变量
file=/dir1/dir2/dir3/my.file.txt
通过 ${ } 分别替换获得不同的值,单一符号是最小匹配﹔两个符号是最大匹配
1. # 去掉/左边的
1)${file#*/}:拿掉第一条 / 及其左边的字串:dir1/dir2/dir3/my.file.txt
2)${file##*/}:拿掉最后一条 / 及其左边的字串:my.file.txt
3)${file#*.}:拿掉第一个 . 及其左边的字串:file.txt
4)${file##*.}:拿掉最后一个 . 及其左边的字串:txt
2.% 右边 去掉/右边的
1)${file%/*}:拿掉最后条 / 及其右边的字串:/dir1/dir2/dir3
2)${file%%/*}:拿掉第一条 / 及其右边的字串:(空值)
3)${file%.*}:拿掉最后一个 . 及其右边的字串:/dir1/dir2/dir3/my.file
4)${file%%.*}:拿掉第一个 . 及其右边的字串:/dir1/dir2/dir3/my
3.字符定位:字符数
1)${file:0:5}:提取最左边的 5 个字:/dir1
2)${file:5:5}:提取第 5 个字?右边的连续 5 个字:/dir2
4.字符串替换 /(第一个);//(全部)
1)${file/dir/path}:将第一个 dir 提换为 path:/path1/dir2/dir3/my.file.txt
2)${file//dir/path}:将全部 dir 提换为 path:/path1/path2/path3/my.file.txt
5.针对不同的变数状态赋值(没设定、空值、非空值):
- :- +
1)${file-my.file.txt} :假如 $file 为空值,则使用 my.file.txt 作默认值。(保留没设定及非空值)
2)${file:-my.file.txt} :假如 $file 没有设定或为空值,则使用 my.file.txt 作默认值。 (保留非空值)
3)${file+my.file.txt} :不管 $file 为何值,均使用 my.file.txt 作默认值。 (不保留任何值)
:+ = :=
4)${file:+my.file.txt} :除非 $file 为空值,否则使用 my.file.txt 作默认值。 (保留空值)
5)${file=my.file.txt} :若 $file 没设定,则使用 my.file.txt 作默认值,同时将 $file 定义为非空值。 (保留空值及非空值)
6)${file:=my.file.txt} :若 $file 没设定或为空值,则使用 my.file.txt 作默认值,同时将 $file 定义为非空值。 (保留非空值)
? :?
7)${file?my.file.txt} :若 $file 没设定,则将 my.file.txt 输出至 STDERR。 (保留空值及非空值))
8)${file:?my.file.txt} :若 $file 没设定或为空值,则将 my.file.txt 输出至 STDERR。 (保留非空值)
6.计算出变量值的长度#
${#file} 等于27
2、数组
1.数组替换方法
A=(a bc de f)
[szb@szb shell48]$ A=(a bc de f)
1) 得到全部组数
[szb@szb shell48]$ echo ${A[@]}
a bc de f
2)可得到 a (第一个组数)
[szb@szb shell48]$ echo ${A}
a
[szb@szb shell48]$ echo ${A[0]}
a
3)计算数组数量
[szb@szb shell48]$ echo ${#A}
1
[szb@szb shell48]$ echo ${#A[@]}
4
4)重定义数组值
A[3]=szb # 将第 4 个组数重新定义为 szb
二、``与$() 命令替换
在 `` 中可以使用 ${} 直接把变量和字符串拼接起来
[szb@szb shell48]$ echo `date`
Tue Jul 12 17:58:49 CST 2022
[szb@szb shell48]$ echo $(date)
Tue Jul 12 17:58:57 CST 2022
三、$(())与expr 整数运算
*需要转义,运算符前后需要空格
[szb@szb shell48]$ echo `expr 2 + 3`
5
[szb@szb shell48]$ echo $((2+3))
5
相关文章
- shell if语句特殊用法(高级用法),工具安装判断
- shell中的字符串操作
- sed命令详解 vim高级技巧 shell编程上
- Shell 函数
- shell字符串变量的特异功能:字符串的替换(${str/源模式/目标模式},${str//源模式/目标模式})、截断
- 从一道题中学习反弹shell
- 《树莓派渗透测试实战》——2.9 通过SSH做反向Shell
- Python学习之sh(shell脚本)在Python中的使用
- shell的编程结构体(函数、条件结构、循环结构)
- chroot - 以 特定 根 目录 运行 命令 或者 交互式 shell
- Shell语法中的test命令用法
- Linux Crontab内环境变量与Shell环境变量的关系及解决问题的办法
- Shell 中的set --用法
- 《Linux命令行与shell脚本编程大全 第3版》高级Shell脚本编程---32
- 《Linux命令行与shell脚本编程大全 第3版》高级Shell脚本编程---11
- 《Linux命令行与shell脚本编程大全 第3版》高级Shell脚本编程---02
- 《Linux命令行与shell脚本编程大全 第3版》Shell脚本编程基础---55
- 《Linux命令行与shell脚本编程大全 第3版》Shell脚本编程基础---54
- 《Linux命令行与shell脚本编程大全 第3版》Shell脚本编程基础---33
- 《Linux命令行与shell脚本编程大全 第3版》Shell脚本编程基础---26
- 《Linux命令行与shell脚本编程大全 第3版》Shell脚本编程基础---21
- 《Linux命令行与shell脚本编程大全 第3版》Shell脚本编程基础---04
- 《Linux命令行与shell脚本编程大全 第3版》Shell脚本编程基础---00
- 《Linux命令行与shell脚本编程大全 第3版》Linux命令行---51