Shell变量常用操作

shell变量常用操作

/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

变量赋值

名称 命令 描述 输出结果
切片 ${<0:5>} 提取最左边的 5 个字节 /dir1
切片 ${<5:5>} 提取第 5 个字节右边的连续 5 个字节 /dir2
替换1次 ${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} 没有设定,则my.file.txt作默认值
(保留非空值) ${<-my.file.txt>} 假如 $file 没有设定或为空值
不保留任何值 ${file+my.file.txt} 不管为何值,my.file.txt作默认值
保留没设定及空值 ${<+my.file.txt>} 若非空值,则使用 my.file.txt
保留空值及非空值 ${file=my.file.txt} 若没设定,则默认my.file.txt
保留非空值 ${<=my.file.txt>} 若没设定或为空值,赠默认 my.file.txt
保留空值及非空值 ${file?my.file.txt} 若没设定,则输出my.file.txt
保留非空值 ${<?my.file.txt>} 若没设定或为空值,则输出my.file.txt

变量转换

名称 命令 描述 输出结果
变量长度 ${#file} 计算变量值长度 27
首字段大写 ${var^}
全部大写 ${var^^}
首字母小写 ${var,}
全部小写 ${var,,}

数组操作

名称 命令 描述 输出结果
数组长度 ${#A[@]} 计算数组长度