基本参数
- e filename 如果 filename存在,则为真 如: [ -e /var/log/syslog ]
- -d filename 如果 filename为目录,则为真 如: [ -d /tmp/mydir ]
- -f filename 如果 filename为常规文件,则为真 如: [ -f /usr/bin/grep ]
- -n 若字符串不为0 - true [=n “$a”]
- cut -d ‘-’ -f1
- mkdir -p :递归创建目录,即使上级目录不存在,会按目录层级自动创建目录
- chmod +x 给执行权限
cut -f1 -d'-' 以'-' 为分隔符,取第一个字段
$ uname -rs|sed 's/ //g'|cut -f1 -d'-' (-f1切割开的第一块区域- f2第二块区域 -d'-'自定义分隔符为-
- $@:表示所有脚本参数的内容 $#:表示返回所有脚本参数的个数。 $0
变量 含义
$0 当前脚本的文件名
$n 传递给脚本或函数的参数。n 是一个数字,表示第几个参数。例如,第一个参数是$1,第二个参数是$2。
$# 传递给脚本或函数的参数个数。
$* 传递给脚本或函数的所有参数。
$@ 传递给脚本或函数的所有参数。被双引号(" ")包含时,与 $* 稍有不同,下面将会讲到。
$? 上个命令的退出状态,或函数的返回值。
$$ 当前Shell进程ID。对于 Shell 脚本,就是这些脚本所在的进程ID。
基本命令
创建
touch 创建文件
mkdir 创建目录
sed
sed的使用方法
https://blog.csdn.net/wdz306ling/article/details/80087889
1.命令行指定sed指令对文本进行处理:
sed +选项 ‘指令’ 文件
2.将sed指令保存到文件中,将该文件作为参数进行调用:
sed +选项 -f 包含sed指令的文件 文件
sed -n '2p' file 打印file第2行
-n 只显示匹配处理的行
sed '2,$p' 打印从第一行到最后一行
语法
路径
要用‘/’,如G:/anhang/xxx.x
if
if
elif
then
fi
if test ${#a[@]} -eq 0
then
echo
fi
if [[ "$a" == *".zip"* || "$a" == *".rar"* ]]
¥() 和 ‘ ’ 命令变量替换
变量
IFS(Internal Filed Separator-内容字段分隔符)
#获取字符串的长度 echo ${#str}
1 查看IFS的值
echo "$IFS"
echo "$IFS"|od -b
0000000 040 011 012 012
0000004
转二进制,"040"-空格,"011"-Tab,"012"-换行符"\n" 。最后一个 012 是因为 echo 默认是会换行的。
2 实际中的应用
#!/bin/bash
OLD_IFS=$IFS #保存原始值
IFS="" #改变IFS的值
IFS=$OLD_IFS #还原IFS的原始值
file=$1
if [ "KaTeX parse error: Expected '}', got '#' at position 6: {file#̲#*.}"x = "css"x…{file##*.}"x = "js"x ];then
do something
fi
复制代码
注意:
1> 提取文件后缀名: ${file##*.}
##是贪婪操作符,从左至右匹配,匹配到最右边的.号,移除包含.号的左边内容。
这里可以参考 http://www.1987.name/264.html
2> 是=,而且其两边有空格,如果没有空格,会报错
3> 多加了x,是为了防止字符串为空时报错。
双引号里,可以有变量
单引号里,变量必须再+单引号
变量 直接用$+name
写操作会自动创建文件
echo ${data} >> ${sourcePath}