推荐一个可以在线写shell脚本的路径,以备不时之需:
https://www.runoob.com/try/runcode.php?filename=helloworld&type=bash
prog=${0##*/}
表示该shell的参数$0,也就是该shell命令的具体路径值。通过
1. ## 表示 去除$0以/为分隔符的头部字符串,
2. ** 表示去除$0的尾部字符串,
而如何确定去除到什么位置为止呢,截止符如何匹配呢? 通过*号表示 通配字符,”/“为匹配目标。 则有*/和/*的字符匹配方法。
#!/bin/sh
prog=${0}
prog1=${0##*m}
echo $prog $prog1
$prog 输出具体路径,即/tmp/email.sh
$prog1 输出 ail.sh,在该例子中,你也可以匹配其他 字符。
值得一提的是, ## 表示匹配到最后一个字符的位置,即 截止到最后一个匹配字符结束。
# 表示匹配到第一个字符时,即截止到第一个匹配字符结束。
Linux 的字符串截取很有用。有八种方法。
假设有变量 var=http://www.aaa.com/123.htm.
1 . # 号截取,删除左边字符,保留右边字符。
复制代码 代码如下:
echo ${var#*//}
其中 var 是变量名,# 号是运算符,*// 表示从左边开始删除第一个 // 号及左边的所有字符,即删除 http://
结果是 :www.aaa.com/123.htm
2 . ## 号截取
复制代码 代码如下:
echo ${var##*/}
##*/ 表示从右边开始删除第一个 / 号及左边的所有字符,即删除 http://www.aaa.com/
结果是 123.htm
3 . %号截取,删除右边字符,保留左边字符
复制代码 代码如下:
echo ${var%/*}
%/* 表示从右边开始,删除第一个 / 号及右边的字符
4 . %% 号截取,删除右边字符,保留左边字符
复制代码 代码如下:
echo ${var%%/*}
%%/* 表示左边开始,删除第一个 / 号及右边的字符
结果是:http:
5 . 从左边第几个字符开始,及字符的个数
复制代码 代码如下:
echo ${var:0:5}
其中的 0 表示左边第一个字符开始,5 表示字符的总个数。
结果是:http:
6 . 从左边第几个字符开始,一直到结束。
复制代码 代码如下:
echo ${var:7}
- 1
其中的 7 表示左边第8个字符开始,一直到结束。
结果是 :www.aaa.com/123.htm
7 . 从右边第几个字符开始,及字符的个数
复制代码 代码如下:
echo ${var:0-7:3}
- 1
其中的 0-7 表示右边算起第七个字符开始,3 表示字符的个数。
结果是:123
8 . 从右边第几个字符开始,一直到结束。
复制代码 代码如下:
echo ${var:0-7}
- 1
表示从右边第七个字符开始,一直到结束。
结果是:123.htm
注:左边的第一个字符是用 0 表示,右边的第一个字符用 0-1 表示