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

未完待续...持续更新

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 本文转自于: 本站(SimonSu’Blog)欢迎各类网站交换链接。只要你的站点有特色,不是垃圾采集站都可以。需要...
    小沭阅读 14,181评论 2 14
  • Ubuntu的发音 Ubuntu,源于非洲祖鲁人和科萨人的语言,发作 oo-boon-too 的音。了解发音是有意...
    萤火虫de梦阅读 99,934评论 9 468
  • linux资料总章2.1 1.0写的不好抱歉 但是2.0已经改了很多 但是错误还是无法避免 以后资料会慢慢更新 大...
    数据革命阅读 14,187评论 2 33
  • Linux中有好多中不同的shell,但是通常我们使用bash (bourne again shell) 进行sh...
    为了明天_加油阅读 2,454评论 0 0
  • 个人学习批处理的初衷来源于实际工作;在某个迭代版本有个BS(安卓手游模拟器)大需求,从而在测试过程中就重复涉及到...
    Luckykailiu阅读 10,261评论 0 11