什么是shell脚本

  • 首先它是一个脚本,并不能作为正式的编程语言。因为是跑在linux的shell中,所以叫shell脚本。说白了,shell脚本就是一些命令的集合。
    例如:创建、进入、删除目录,拷贝文件等操作。
  • Shell脚本通常都是以.sh 为后缀名的

shell脚本的基本结构以及如何执行

最基本的shell脚本(Ubuntu14.04)

①:脚本内容hello.sh

#! /bin/sh				#必需的:表示该文件使用的是bash语法,不加就无法执行
echo "Hello World!"

②:给脚本执行权限
默认我们用vim编辑的文档是不带有执行权限的,所以需要加一个可执行权限

sudo chmod 775 hello.sh
或
sudo shmod +x hello.sh

③:脚本执行方法

方法一:./hello.sh
方法二:sh hello.sh
注意:使用sh命令去执行一个shell脚本的时候是可以加-x选项来查看这个脚本执行过程的,这样有利于我们调试这个脚本哪里出了问题。
方法三:sh -x hello.sh

执行效果:
在这里插入图片描述

输入/输出重定向

输入/输出重定向是改变 Shell 命令或程序默认的标准输入/输出目标,重新定向到新的目标。
Linux 中默认的标准输入定义为键盘,标准输出定义为终端窗口。

输出重定位

 >1> 输出重定向,会覆盖之前内容
 用法:echo "hello world" > 文件名	//把终端内容输出给文件

在这里插入图片描述
在这里插入图片描述

>>1>> 追加,在文件末尾添加
用法:echo "hello hangzhou >> 文件名

在这里插入图片描述
在这里插入图片描述

输入重定位

wc < 文件名	//从文件中获取数据
wc -w < 文件名	//获取文件中的单词数

在这里插入图片描述

查找字符串grep

命令格式:

grep [选项] PATTERN [文件名]
选项:
-V 或 --version 查看 grep 版本
-e PATTERN 实现多个选项的匹配,逻辑 or 的关系(grep -e pattern1 -e pattern2 file) -i ignore-case 忽略字符大小写 [Hh]ello
-v 表示反向选取,即显示不包含匹配文本的所有行
-n 或 --line-number 显示行号
-r 或 -R:指定的查找对象是目录不是文件时,表示读取目标目录下的所有文件
-w 匹配整个单词,如果是字符串中包含此单词,则不做匹配
PATTERN:
匹配样式(需要匹配的字符串样式)支持基本正则表达式
文件名:
需要查找的文件(若不指定任何文件名称,或是所给予的文件名为"-",则 grep 指令会从标准输入设备读取数
据。)

查找库中"app_main"函数”

示例(a.c)

①:搜索”hello”字符串

gerp hello a.c

在这里插入图片描述
②:搜索时不区分大小写

grep -i hello a.c

③:显示行号

grep -i -n hello a.c

在这里插入图片描述
④:显示不包含某个字符串的行

grep -i -n -v hello a.c

⑤:日常使用
在这里插入图片描述

运行shell脚本可能遇到的问题

①:报错:-bash: ./mklib.sh: /bin/sh^M: bad interpreter: 没有那个文件或目录
在这里插入图片描述
解决方法:

运行:sed -i 's/\r$//' filename
#filename是脚本名(mklib.sh)
Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐