sh脚本语法

开头#!/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

未完待续...持续更新

你可能感兴趣的:(sh脚本语法)