IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> 创建一个Shell程序 -> 正文阅读

[系统运维]创建一个Shell程序

执行方式

Shell的执行两种执行方式:

  1. 用户可以依次输入一系列命令,交互式的执行它们
  2. 用户可以把所有的这些命令按照顺序保存在一个文件中,然后将该文件作为一个程序来执行,该文件就是所谓的Sehll脚本文件或者叫Shell脚本
eden_ubuntu@edenubuntu:~/Desktop$ for filename in `ls .`
> do
> if echo "$filename" | grep "json"
> then
> echo "$filename"
> fi
> done
test1.json
test1.json
test.json
test.json

?

当Shell期待用户下一步的输入时,正常的Shell提升符“#”将会改变为“>”。用户可以一直输入下去,由Shell来判断何时输入完毕并立即执行程序。

尽管上述方式非常快捷,但是使用起来每次执行都需要重新输入一次很是麻烦,所以在实际开发中,这种交互式的执行程序方式并不常见。我们一般会用脚本文件来执行.

创建脚本

对于一个基本的Shell程序来说,应该拥有以下基本元素

  1. #!/bin/bash. 指定命令解读器语句
  2. 注释用来说明代码的功能
  3. 可执行的语句,实现程序的功能

?脚本文件都是普通的文本文件,可以使用任何的文本编辑器查看或者修改。如下我们使用vi命令创建一个脚本文件1-2.sh

#!/bin/sh
#循环遍历
for filename in `ls .`
do
        if echo "$filename" | grep "json"
        then
                echo "$filename"
        fi
done

Shell程序中的注释以“#”符号开始。请注意第一行的#!/bin/sh,它是一种特殊形式的注释,其中“#!”字符告诉系统同一行中紧跟在它后面的那个参数是用来执行本文件的程序,这里指定解释器的绝对路径。

Shell脚本的规定使得用户可以非常灵活地调用任何解释器,而不仅仅是Shell程序,比如其他命令

#指定解释器
#!/bin/more
echo "Hello world!"

?执行结果是:

eden_ubuntu@edenubuntu:~/Documents/Shell$ ./1-7.sh 
#!/bin/more
echo "Hello world!"

如何注释

单行注释 #输出字符串

多行注释:实例如下

#!/bin/bash
:<<BLOCK
本脚本的作用是输出一行字符串
作者:Eden
BLOCK
echo "Hello world"

?结果如下:

eden_ubuntu@edenubuntu:~/Documents/Shell$ ./1-8.sh 
Hello world

把脚本设置为可执行

当编辑完脚本文件后,这个脚本还不能马上执行,因为该脚本还没有可执行的权限。我们使用命令ls -l或者ll看下

eden_ubuntu@edenubuntu:~/Documents/Shell$ ll
total 12
drwxrwxr-x 2 eden_ubuntu eden_ubuntu 4096 Jul  2 20:08 ./
drwxr-xr-x 5 eden_ubuntu eden_ubuntu 4096 Jul  2 20:01 ../
-rw-rw-r-- 1 eden_ubuntu eden_ubuntu  105 Jul  2 20:03 1-2.sh

r表示可读权限,w表示可写权限,x表示可执行权限;可以看到1-2.sh并没有可执行权限

我们执行下脚本文件看看结果:

eden_ubuntu@edenubuntu:~/Documents/Shell$ ./1-2.sh
bash: ./1-2.sh: Permission denied

提示Permission denied,就是权限不够。

我们需要给该脚本文件赋予可执行的权限,这里使用chmod命令

eden_ubuntu@edenubuntu:~/Documents/Shell$ chmod u+x 1-2.sh 
eden_ubuntu@edenubuntu:~/Documents/Shell$ ll
total 12
drwxrwxr-x 2 eden_ubuntu eden_ubuntu 4096 Jul  2 20:08 ./
drwxr-xr-x 5 eden_ubuntu eden_ubuntu 4096 Jul  2 20:01 ../
-rwxrw-r-- 1 eden_ubuntu eden_ubuntu  105 Jul  2 20:03 1-2.sh*

或者使用chmod 744 1-2.sh也可以达到目的。具体的chmod命令说明请查看其他文章

现在我们再执行1-2.sh,结果与之前交互性执行的一致

eden_ubuntu@edenubuntu:~/Documents/Shell$ ./1-2.sh 
test1.json
test1.json
test.json
test.json

概括

当我们需要执行多条Shell命令组合执行一个特定的任务时,我们最好使用脚本文件,将执行命令输入到脚本文件中。并且赋予脚本文件可执行的权限。

有两点注意:

  1. “#!”这个特殊的注释,表示我们使用哪个Shell程序。一般有“#!/bin/sh”,"#!/bin/bash"
  2. 脚本文件里tab键来表示代码层次的,并不是必须的。没有也不影响Shell脚本的正确执行,这个只是我们为了让代码更加好阅读。
  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2022-07-05 23:43:39  更:2022-07-05 23:44:00 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 12:15:42-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码