开头#!/bin/sh
符号#!用来告诉系统后面的参数是用来执行该文件的程序。
要使编写脚本可执行 编译chmod +x filename 这样才能用./filename来运行
特殊符号
通配符 *
通过find命令查找.sh结尾的文件,使用*代替文件名
find . -name '*.sh'
{}
用来生成序列
$ echo {1..5}
1 2 3 4 5
单引号、双引号、不加引号、反引号
单引号
什么内容就显示什么内容
$ echo '$PWD hostname'
$PWD hostname
双引号
对里面的特殊符号进行解析
$ echo "$PWD hostname"
/Users/lvhan/Desktop/dirName/subDir hostname
不加引号
echo $PWD hostname
/Users/lvhan/Desktop/dirName/subDir hostname
反引号
先运行,把结果留下 与$()作用相同
单小括号、双小括号
()
表达式
文件表达式
if [ -f file ] 文件存在
if [ -d ... ] 目录存在
if [ -s file ] 文件存在且非空
if [ -r file ] 文件存在且可读
if [ -w file ] 文件存在且可写
if [ -x file ] 文件存在且可执行
整数变量表达式
if [ int1 -eq int2 ] int1 == int2
if [ int1 -ne int2 ] int1 != int2
if [ int1 -ge int2 ] int1 >= int2
if [ int1 -gt int2 ] int1 > int2
if [ int1 -le int2 ] int1 <= int2
if [ int1 -lt int2 ] int1 < int2
字符串变量表达式
if [ $string1 = $string2 ] string1 == string2 // 字符串允许使用赋值号做等号
if [ $string1 != $string2] string1 != string2
if [ -n $string ] string非空(非0), 返回0(true)
if [ -z $string ] string为空
if [ $string] 类似-n
cat 命令
1. cat filename => 一次显示整个文件
2. cat > filename => 创建一个文件
3. cat file1 file2 > file => 将file1 file2 合并成file
4. cat file1 >> file2 => 将file1的内容写到file2
参数:
-n 或 --number 由 1 开始对所有输出的行数编号
-b 或 --number-nonblank 和 -n 相似,只不过对于空白行不编号
-s 或 --squeeze-blank 当遇到有连续两行以上的空白行,就代换为一行的空白行
-v 或 --show-nonprinting
find 命令
find pathName -name "文件名" -exec ... \;
字符串包含判断
方法一:利用grep查找
strA="Hello world"
strB="llo"
result=$(echo $strA | grep "${strB}")
if [[ "$result" != "" ]];then
echo "包含"
else
echo "不包含"
fi
方法二:利用字符串运算符
strA="Hello world"
strB="llo"
if [[ $strA =~ $strB ]];then
echo "包含"
else
echo "不包含"
fi
方法三:利用通配符
strA="Hello world"
strB="llo"
if [[ $strA == *$strB* ]];then
echo "包含"
else
echo "不包含"
fi
未完待续...持续更新