变量及截取_脚本中
###变量中有字符
1
字符串常量使用单引号括起来,如果字符串中含有变量、命令等使用双引号括起来,不建议不加引号。
特殊使用方法
$$ : Shell本身的PID(ProcessID)
$! : Shell最后运行的后台Process的PID
$? : 最后运行的命令的结束代码(返回值)
$- : 打印当前 shell 中的当前选项集
1 2 3 4 5 6 himBH: 表示启用以下选项 H - histexpand m - monitor h - hashall B - braceexpand i - interactive$* : 所有参数列表
$@ : 所有参数列表
$# : 添加到Shell的参数个数
$0 : shell本身的文件名
$1~$n : 添加到shell中的个参数值
#、##、%、%%记忆的方法为:
# :去掉左边(键盘上#在 $ 的左边)
% :去掉右边(键盘上% 在$ 的右边)
单一符号是最小匹配;两个符号是最大匹配
例子: #、##、%、%%
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
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
shell中变量传递
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
特殊字符:
aa="NSWufewa#@few&edewa"
aa=${aa//&/\\&} # 还原 & 字符
#/bin/sh
function convert(){
keyword=${1//\\/\\\\}
keyword=${keyword//&/\\&}
keyword=${keyword//\ /\\ }
#keyword=${keyword//./\\.}
#keyword=${keyword//*/\\*}
#keyword=${keyword//&/\\&}
#keyword=${keyword//$/\\$}
#keyword=${keyword//+/\\+}
#keyword=${keyword//=/\\=}
#keyword=${keyword//^/\\^}
#keyword=${keyword//%/\\%}
#keyword=${keyword//!/\\!}
#keyword=${keyword//@/\\@}
#keyword=${keyword//#/\\#}
#keyword=${keyword//[/\\[}
#keyword=${keyword//]/\\]}
#keyword=${keyword//-/\\-}
#keyword=${keyword//\?/\\\\?} ?号不能转义.否则要报错
#keyword=${keyword//"/\\"}
echo $keyword
}
pwd=$(cat pwd.conf | grep pwd)
pwd="${pwd:4}"
echo ${pwd}
pwd=`convert ${pwd}`
echo ${pwd}
sed -i "s|admin_pwd|${pwd}|g" b
本文由作者按照
CC BY 4.0
进行授权