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[@]} |
计算数组长度 |
|
|
|
|
|