UNIX和Linux上的基本脚本

如果您对UNIX和Linux系统上的编写脚本尚未满意,则此帖子可能会让您开始健康。

规则程序手册编程语言
Thinkstock.

在UNIX或Linux系统上创建脚本可能会变得容易或令人惊讶的复杂;这一切都取决于您尝试获取脚本的程度。在这篇文章中,我们看看脚本基础 - 如果您以前从未构建脚本,则如何开始。

识别壳

UNIX和Linux系统今天有许多可以使用的shell。每个shell都是命令解释器。它读取命令并将它们发送到内核进行处理。

抨击是最受欢迎的,但也有ZSH.CSH.TCSH.korn.。甚至有一个叫做由于其有用的命令自动完成选项,这对于Linux初学者来说可能特别好。要确定您使用的shell,请使用此命令:

$ echo $ shell / bin / bash

您还可以通过检查来确定您的主shell/ etc / passwd文件:

$ grep $用户/ etc / passwd nemo:x:1111:1111:nemo鱼:/ home / nemo:/ bin / bash<== / bin / bash

确定Linux系统上可用的shell的一种方法是检查/ etc / shells文件。

$更多/ etc / shell#/ etc / shell:有效登录壳/ bin / sh / bin / dash / bin / bash / bin / rbash / bin / zsh / usr / bin / zsh / usr / bin /屏幕/ usr /Bin / TMUX / USR / BIN / FISH

上面所示的系统声称具有九种可用壳。

哪个shell最适合任何整除依赖性依赖于他们习惯使用的东西,因为脚本中的大部分语法都不表示您将找到的命令/ bin./ usr / bin或者/ usr / local / bin。相反,它们是壳牌本身的一部分,称为“内置”。这包括用于循环的命令(例如,为了尽管)。

脚本的一个简单选择是使用您在命令行上使用的任何shell,从而毕竟,您将更多地使用它来使用它。

选择你的shell.

要确定哪些可用的shell将在脚本中运行命令,请使脚本的第一行看起来像其中一个:

#!/ bin / sh#!/ bin / dash#!/ bin / bash#!/ bin / rbash#!/ bin / zsh#!/ usr / bin / zsh#!/ usr / bin /屏幕#!/ usr/ bin / tmux#!/ usr / bin / fish

当脚本的第一行标识要使用的shell时,该shell将在脚本中运行命令。如果您不将shell作为脚本中的第一行包含,则在调用脚跟时使用的shell将是运行它的shell。

运行命令

您在Linux命令行上运行的任何命令都可以在脚本中运行,提供它与指定的shell兼容。使用您喜欢的文本编辑器并键入命令。这是一个非常简单的脚本,以日月为年份格式显示当前日期。我称这个脚本“今天”。

#!/ bin / bash日期+“%d%b%y”

运行它......

$于今天3月20日08日

添加评论

对于解释脚本的脚本添加注释是一个很好的想法 - 特别是当脚本长或语法复杂时,尤其是脚本。只需使用#符号开始评论。注释可以是单行的,也可以添加到脚本中的命令末尾。例如:

#!/ bin / bash#在循环中反复显示日期/时间,而true do echo-n“仍在运行......”日期睡眠300#睡眠5分钟完成

使文件可执行

要使脚本可执行,请使用chmod.命令并确保预期用户可以运行它。例如:

$ chmod 700 myscript#您可以运行它$ chmod 755 myscript#每个人都可以运行它

如果脚本未设置为可执行文件,则它仍然可以使用““内置”源“(即,读取和运行)脚本。

$。今天08年3月20日

使用if命令

如果命令允许您测试条件或变量。在此示例中,我们检查脚本是否在星期五运行。

如果[`date +“%a”`==星期五“;然后回声”tgif!“;FI.

一个基本的语法如果命令是“如果value == toot_value”。这==.执行比较,有必要确保shell在比较运算符的每一侧看到一个值。出于这个原因,您经常必须将您的字符串放在某种报价中。

了解变量

只是为了确定这很清楚,重要的是要理解变量以一种方式分配并在另一个方式中引用。仅使用它的名称分配一个变量,但在名称之前$用它。

$ favnum = 11 $ echo $ favnum 11

提示用户输入

要提示用户在脚本中输入某些信息,您需要提供提示和命令来阅读用户类型的内容。您还应分配与此示例中有意义的变量名称。注意使用echo -n.命令意味着用户将在显示提示符时在同一行中输入响应。

echo -n“多少循环?>”读numloops

运行脚本的人将看到提示并提供响应:

多少循环?> 11

使用命令行参数

要使用用户与脚本名称一起进入的参数,您需要知道如何识别它们。脚本参数将被分配名称1美元2美元等等。对于您要重复使用的任何参数,您可能会考虑将这些值分配给更有意义的变量名称。

$!/ bin / bash如果[[$ 1!= [0-9] *]];然后回显“错误:1美元不是数字”退出
别的
循环= 1美元

在这种情况下,我们检查提供提供的第一个参数是数字和退出脚本如果不是。如果是响应数字,然后我们将它分配给变量$循环稍后使用脚本。

在脚本中要做的另一个有用的事情是首先验证是否有参数。否则类似于上面所示的语法将失败,因为shell会看到“如果[[!= [0-9] *]];”这会产生一个语法错误。

要检查所提供的参数数是否正确,可以使用像下面的语法检查以确定已提供至少两个参数,否则,提醒用户需要多个行和文件名:

#!/ bin / bash如果[$#-lt 2];然后回显“使用:$ 0行文件名”退出1 fi

循环的不同方式

有许多方法可以在脚本中循环。用为了当您想要循环预设的次数。例如:

#!/ bin / bash在太阳星期一星期二星期三星期三星期三星期三坐了回声完成

或者 …

#!/ bin / bash

在{a..s}中的字母。echo $ bontress完成

尽管只要某种条件存在或不存在,即可循环循环。

#!/ bin / bash n = 1 while [$ n -le 4] do echo $ n((n ++))完成

使用案例陈述

案例语句允许您的脚本根据正在检查的值而不同的反应。在下面的脚本中,我们使用不同的命令来通过识别文件类型来提取作为参数提供的文件的内容。

#!/ bin / bash如果[$#-eq 0];然后echo-n“filename>”读取文件名else filename = $ 1 fi如果[!-f“$ filename”];然后回显“没有这样的文件:$ filename”退出fi case $ filename在* .tar)tar xf $ filename ;;* .tar.bz2)tar xjf $ filename ;;* .tbz)tar xjf $ filename ;;* .tbz2)tar xjf $ filename ;;* .tgz)tar xzf $ filename ;;* .tar.gz)tar xzf $ filename ;;* .gz)gunzip $ filename ;; *.bz2) bunzip2 $filename;; *.zip) unzip $filename;; *.Z) uncompress $filename;; *.rar) rar x $filename ;; *) echo “No extract option for $filename” esac

请注意,如果没有提供“,则此脚本也提示文件名,然后检查以确保确实存在指定的文件。只有在这之后才会扰乱提取。

反应错误

您可以在脚本中检测和反应脚本中的错误,并在此过程中避免其他错误。诀窍是在运行命令后检查退出代码。如果出口代码具有除零以外的值,则发生错误。在此脚本中,我们希望看到Apache是​​否正在运行,但从支票发送输出/ dev / null。然后,我们检查退出代码是否不等于零,因为这表明了PS.命令没有得到回复。如果退出代码是不是零,脚本通知用户Apache未运行。

#!/ bin / bash ps -ef |grep apache2> / dev / null如果[$?!= 0];然后Echo Apache未运行退出FI

包起来

Linux系统上的脚本可以帮助确保以一致的方式完成复杂的处理,并使一系列命令较少。

加入网络世界社区足球竞猜app软件Facebooklinkedin.评论是最重要的主题。
有关的:

版权所有©2021.足球竞彩网下载

IT薪水调查2021:结果是