我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Linux shell脚本的建立与执行

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Linux shell脚本的建立与执行

在进行linux测试时编写脚本是必不可少的。最近经常使用Linux,感觉太频繁地敲击键盘有些累了,于是想到了Shell脚本。可以把太多的命令写成一个脚本,这样每次执行一遍  shell文件,就可以省去了敲击键盘的时间。于是在网上搜了一些有关Linux下脚本编程的内容。

Shell不仅仅是命令的收集,而且是一门非常棒的编程语言。您可以通过使用shell使大量的任务自动化,shell特别擅长系统管理任务,尤其适合那些易用性、可维护性和便携性比效率更重要的任务。

用户可以使用任何文本编辑器编辑shell脚本文件,例如VI、gedit等。

Shell脚本的名称可以随便定义,也不要什么后缀名,例如可以写abc,smartzip这类名称。

下面我们开始编写一个Shell脚本:

1. 程序必须以下面的行开始(必须放在文件的第一行):


#!/bin/sh

符号#!用来告诉系统它后面的参数是用来执行该文件的程序。在这个例子中我们使用/bin/sh来执行程序。

2. 注释

在进行shell编程时,以#开头的句子表示注释,直到这一行的结束。如同其他编程语言一样,我们在编写脚本时也应该尽可能地添加注释,那么即使相当长的时间内没有使用该脚本,我们也能在很短的时间内明白该脚本的作用及工作原理。

3. 变量

在其他编程语言中您必须使用变量。在shell编程中,所有的变量都由字符串组成,并且您不需要对变量进行声明。要赋值给一个变量,您可以这样写:变量名=值

取出变量值可以加一个美元符号($)在变量前面:


#!/bin/sh
#对变量赋值:
a="hello world"
# 现在打印变量a的内容:
echo "A is:"
echo $a

4. Shell命令和流程控制

在shell脚本中可以使用三类命令:

1)Unix 命令:

虽然在shell脚本中可以使用任意的unix命令,但是还是由一些相对更常用的命令。这些命令通常是用来进行文件和文字操作的。

常用命令语法及功能

  • echo "some text": 将文字内容打印在屏幕上
  • ls: 文件列表
  • wc –l filewc -w filewc -c file:
  • 计算文件行数计算文件中的单词数计算文件中的字符数
  • cp sourcefile destfile: 文件拷贝
  • mv oldname newname : 重命名文件或移动文件
  • rm file: 删除文件
  • grep ''pattern'' file: 在文件内搜索字符串比如:grep
  • ''searchstring'' file.txt
  • cut -b colnum file:指定欲显示的文件内容范围,并将它们输出到标准输出设备比如:输出每行第5个到第9个字符cut -b5-9 file.txt千万不要和cat命令混淆,这是两个完全不同的命令
  • cat file.txt: 输出文件内容到标准输出设备(屏幕)上
  • file somefile: 得到文件类型
  • read var: 提示用户输入,并将输入赋值给变量
  • sort file.txt: 对file.txt文件中的行进行排序
  • uniq: 删除文本文件中出现的行列比如: sort file.txt | uniq
  • expr: 进行数学运算Example: add 2 and 3expr 2 "+" 3
  • find: 搜索文件比如:根据文件名搜索find . -name filename -print
  • tee: 将数据输出到标准输出设备(屏幕) 和文件比如:somecommand | tee  outfile
  • basename file: 返回不包含路径的文件名比如: basename /bin/tux将返回 tux
  • dirname file: 返回文件所在路径比如:dirname /bin/tux将返回/bin
  • head file: 打印文本文件开头几行
  • tail file : 打印文本文件末尾几行

sed: Sed是一个基本的查找替换程序。可以从标准输入(比如命令管道)读入文本,并将结果输出到标准输出(屏幕)。该命令采用正则表达式(见参考)进行搜索。不要和shell中的通配符相混淆。比如:将linuxfocus 替换为 LinuxFocus :cat text.file | sed ''s/linuxfocus/LinuxFocus/'' > newtext.fileawk: awk

用来从文本文件中提取字段。缺省地,字段分割符是空格,可以使用-F指定其他分割符。cat   file.txt | awk -F, ''{print $1 "," $3  }''这里我们使用,作为字段分割符,同时打印第一个和第三个字段。如果该文件内容如下: AdamBor, 34, IndiaKerry Miller, 22, USA命令输出结果为:AdamBor, IndiaKerry Miller, USA

2) 概念: 管道, 重定向和 backtick

这些不是系统命令,但是他们真的很重要。管道 (|) 将一个命令的输出作为另外一个命令的输入。

grep "hello" file.txt | wc -l

在file.txt中搜索包含有”hello”的行并计算其行数。

在这里grep命令的输出作为wc命令的输入。当然您可以使用多个命令。

重定向:将命令的结果输出到文件,而不是标准输出(屏幕)。

>  写入文件并覆盖旧文件

>> 加到文件的尾部,保留旧文件内容。

反短斜线

使用反短斜线可以将一个命令的输出作为另外一个命令的一个命令行参数。

命令: find . -mtime -1 -type f -print 用来查找过去24小时(-mtime –2则表示过去48小时)内修改过的文件。如果您想将所有查找到的文件打一个包,则可以使用以下脚本:


#!/bin/sh
# The ticks are backticks (`) not normal quotes (''):
tar -zcvf lastmod.tar.gz `find . -mtime -1 -type f 
-print`

3) 流程控制

"if" 表达式 如果条件为真则执行then后面的部分:

 if ....; then
....
elif ....; then
....
 else
 ....
 fi

大多数情况下,可以使用测试命令来对条件进行测试。比如可以比较字符串、判断文件是否存在及是否可读等等…通常用" [ ] "来表示条件测试。注意这里的空格很重要。要确保方括号的空格。

  •  [ -f "somefile" ] :判断是否是一个文件
  •  [ -x "/bin/ls" ] :判断/bin/ls是否存在并有可执行权限
  •  [ -n "$var" ] :判断$var变量是否有值
  •  [ "$a" = "$b" ] :判断$a和$b是否相等

5. 执行脚本 Linux下的sh文件默认是有执行权限的。我们可以用命令:ls -l file_name来查看用户对文件的权限。如果没有执行权限,可以执行以下命令添加:chmod +x file_name 。然后可以通过运行:sh XX.sh这样的命令来运行脚本。当然不同的系统可能不完全相同,需要根据实际情况来。例如有的Linux下是./XX.sh就可以运行。

概括地来说,shell对shell脚本的调用可以采用3种方式:

(1)一种是将文件名作为shell命令的参数,其调用格式为:


$ Bash script_file

当要被执行的脚本文件没有可执行权限时,只能使用这种调用方式。

(2)另一种调用的方法是先将脚本文件的访问权限更改为可执行,以便该文件可以作为执行文件调用。

具体的方法是:$chmod +x  script_file


$PATH=$PATH:$PWD
$script_file

(3)当执行一个脚本文件时,Shell就产生了一个Shell(即一个子进程)去执行文件中的命令。因此,脚本文件的变量值不能传递到当期Shell(即父进程)。为了使脚本文件中的变量值传递到当前Shell,必须在命令文件名前面加“.”。即:


$./script_file

“.”命令的功能是在当前shell中执行脚本文件中的命令,而不是产生一个子shell执行命令文件中的命令。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对我们的支持。如果你想了解更多相关内容请查看下面相关链接

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Linux shell脚本的建立与执行

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Linux shell脚本的建立与执行

在进行linux测试时编写脚本是必不可少的。最近经常使用Linux,感觉太频繁地敲击键盘有些累了,于是想到了Shell脚本。可以把太多的命令写成一个脚本,这样每次执行一遍 shell文件,就可以省去了敲击键盘的时间。于是在网上搜了一些有关
2022-06-04

怎么在Linux中建立shell脚本

今天就跟大家聊聊有关怎么在Linux中建立shell脚本,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。1. 程序必须以下面的行开始(必须放在文件的第一行):#!/bin/sh符号#!
2023-06-09

Linux系统怎么执行Shell脚本

小编给大家分享一下Linux系统怎么执行Shell脚本,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!1)bash script-name或者sh script-n
2023-06-28

Linux下使用shell脚本自动执行脚本文件

以下实例本人在Centos6.5 64位操作系统中使用 一、定时复制文件a、在/usr/local/wfjb_web_back目录下创建 tomcatBack.sh文件文件内容:#将tomcat中的应用wfjb_web 复制到 /usr/l
2022-06-04

linux怎么编写和执行shell脚本

编写和执行Shell脚本的步骤如下:1. 打开一个文本编辑器,比如使用vi或者nano。2. 在第一行添加shebang,指定要使用的Shell解释器。例如,使用Bash解释器,可以添加 #!/bin/bash。3. 在下面的行中编写She
2023-09-22

ansible执行shell脚本的方法

1. 编写脚本:pb_shell.shwfq@ubuntu:~/playbook$ cat pb_shell.sh #!bin/sh echo "today(`date`) is a nice day, since I do some n
2022-06-04

Linux中执行shell脚本的方法有哪些

本篇内容介绍了“Linux中执行shell脚本的方法有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!bash shell 脚本的方法有多
2023-06-09

Linux中Shell脚本执行超时如何解决

这期内容当中小编将会给大家带来有关Linux中Shell脚本执行超时如何解决,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。在shell里会有一种不太常见的情况,就是脚本有时候会出现超时的现象。一般来说遇到
2023-06-16

怎么在Linux中使用shell脚本自动执行脚本文件

本篇文章为大家展示了怎么在Linux中使用shell脚本自动执行脚本文件,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。一、定时复制文件  a、在/usr/local/wfjb_web_back目录下
2023-06-09

Linux下如何添加shell脚本执行权限

这篇文章主要为大家展示了“Linux下如何添加shell脚本执行权限”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Linux下如何添加shell脚本执行权限”这篇文章吧。创建脚本文件第一步是使用
2023-06-27

shell脚本的执行方式有哪些

今天就跟大家聊聊有关shell脚本的执行方式有哪些,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。首先,看下我们的脚本内容[tan@tan scripts]$ lltotal 4-rw
2023-06-09

Linux如何执行shell脚本完成任务计划

小编给大家分享一下Linux如何执行shell脚本完成任务计划,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!导读众所周知,当前linux跑任务计划我们一般借助于crontab任务计划来实现。但这个任务计划默认最小单位为分钟
2023-06-05

shell脚本实现监控shell脚本的执行流程及变量的值

很多时候,我们都会写shell程序来完成一些不用重复造轮子的时刻,但是,又因为shell语句中也会有函数,也会有变量,在运行后到底执行了哪些相关的操作,就需要对具体执行过程中的变量等可变的因素的监控,那么我们下面就写个小小的shell例子,
2022-06-04

Linux Shell脚本多命令执行逻辑的示例详解

Linux 中可以使用分号";“、双and号”&&“和双竖线”||"来连接多个命令。根据场景的不同适当的使用合适的符号,感兴趣的小伙伴可以了解一下
2022-11-13

Shell脚本避免重复执行的方法

很多用cron定时执行的shell脚本可能会由于各种原因执行很久,会有必要在运行的时候先检查一下自身是否还在运行。本文提供的linux shell脚本用以检查以命令sh ...来执行的shell脚本。要对其他东西进行唯一性检查,可以稍微修改
2022-06-04

防止shell脚本重复执行的代码

例如,要求脚本只能顺序访问某个资源,例如磁盘文件等,就可以参考下面的实现。#!/bin/bash## file locking using bash.# ver 0.1.6## author : malundao ( malundao@si
2022-06-04

linux中怎么让shell脚本变成可执行文件

这篇文章主要介绍了linux中怎么让shell脚本变成可执行文件,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。创建bash脚本并使用chmod命令使脚本可执行,无需脚本前面加
2023-06-15

怎么在Linux中使用crontab定时执行Shell脚本

今天就跟大家聊聊有关怎么在Linux中使用crontab定时执行Shell脚本,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。1、crontab执行配置* * * * * cd /项目
2023-06-09

编程热搜

目录