首页 网站首页 商业信息 脚本 查看内容

改进你的脚本程序的 5 个方法

杭州共生网络 2023-6-30 17:27 8417人围观 脚本


巧用 Bash 剧本法式能帮助你完成很多极具应战的使命。

改良你的剧本法式的 5 个方式


系统治理员经常写剧本法式,非论是非,这些剧本可以完成某种使命。

你能否已经检察过某个软件刊行方供给的安装用的剧本script法式?为了可以顺应分歧用户的系统设置,顺遂完成安装,这些剧本法式经常包括很多函数和逻辑分支。多年来,我堆集了一些改良剧本法式的一些技能,这里分享几个,希望能对朋友们也有用。这里列出一组短剧本示例,展现给大师做剧本样本。

初步尝试


我尝试写一个剧本法式时,原始法式常常就是一组号令行,凡是就是挪用标准号令完成诸如更新网页内容之类的工作,这样可以节省时候。其中一个类似的工作是解压文件到 Apache 网站办事器的主目录里,我的最初剧本法式大如果下面这样:
cp january_schedule.tar.gz /usr/apache/home/calendar/cd /usr/apache/home/calendar/tar zvxf january_schedule.tar.gz

这帮我节省了时候,也削减了键入多条号令操纵。光阴久了,我把握了别的的技能,可以用 Bash 剧本法式完成更难的一些工作,比如说建立软件安装包、安装软件、备份文件系统等工作。

1、条件分支结构


和众多其他编程说话一样,剧本法式的条件分支结构一样是强大的常用技术。条件分支结构赋予了计较机法式逻辑才能,我的很多实例都是基于条件逻辑分支。

根基的条件分支结构就是 if条件分支结构。经过判定能否满足特定条件,可以控制法式挑选履行响应的剧本号令段。比如说,想要判定系统能否安装了 Java ,可以经过判定系统有没有一个 Java 库目录;假如找到这个目录,就把这个目录途径增加到可运转法式途径,也便可以挪用 Java 库利用了。
if [ -d "$JAVA_HOME/bin" ] ; then    PATH="$JAVA_HOME/binPATH"


2、限制运转权限


你也许想只答应特定的用户才能履行某个剧本法式。除了 Linux 的权限答应治理,比如对用户和用户组设定权限、经过 SELinux 设定此类的庇护权限等,你还可以在剧本里设备逻辑判定来设备履行权限。类似的情况能够是,你需要确保只要网站法式的一切者才能履行响应的网站初始化操纵剧本。甚至你可以限制只要 root 用户才能履行某个剧本。这个可以经过在剧本法式里设备逻辑判定实现,Linux 供给的几个情况变量可以帮手。其中一个是保存用户称号的变量 $USER, 另一个是保存用户识别码的变量$UID。在剧本法式里,履行用户的 UID 值就保存在$UID变量里。

用户名辨别


第一个例子里,我在一个带有几个利用办事器实例的多用户情况里指定只要用户 jboss1可以履行剧本法式。条件if语句主如果判定,“要求履行这个剧本法式的用户不是jboss1吗?”当此条件为真时,就会挪用第一个echo语句,接着是exit 1,即退出这个剧本法式。
if [ "$USER" != 'jboss1' ]; then     echo "Sorry, this script must be run as JBOSS1!"     exit 1fiecho "continue script"


根用户辨别


接下来的例子是要求只要根用户才能履行剧本法式。根用户的用户识别码(UID)是 0,设备的条件判定采用大于操纵符(-gt),一切 UID 值大于 0 的用户都被制止履行该剧本法式。
if [ "$UID" -gt 0 ]; then     echo "Sorry, this script must be run as ROOT!"     exit 1fiecho "continue script"


3、带参数履行法式


可履行法式可以附带参数作为履行选项,号令行剧本法式也是一样,下面给出几个例子。在这之前,我想告诉你,能写出好的法式并不但是写出我们想要它履行什么的法式,法式还需要不履行我们不要它履行的操纵。假如运转法式时没有供给参数形成法式缺少充足信息,我愿意剧本法式不要做任何破坏性的操纵。因此,法式的第一步就是确认号令行能否供给了参数,判定的条件就是参数数目 $#能否为 0 ,假如是(意味着没有供给参数),就间接停止剧本法式并退出操纵。
if [ $# -eq 0 ]; then    echo "No arguments provided"    exit 1fiecho "arguments found: $#"


多个运转参数


可以传递给剧本法式的参数不止一个。剧本利用内部变量指代这些参数,内部变量名用非负整数递增标识,也就是 $1$2$3等等递增。我只是扩大前面的法式,并鄙人面一行输出显现用户供给的前三个参数。明显,要针对一切的每个参数有对应的响应需要更多的逻辑判定,这里的例子只是简单展现参数的利用。
echo $1 $2 $3

我们在会商这些参数变量名,你也许有个疑问,“参数变量名怎样跳过了 $0,(而间接从$1起头)?”

是的,是这样,这是有缘由的。变量名 $0确切存在,也很是有用,它贮存的是被履行的剧本法式的称号。
echo $0

法式履行进程中有一个变量名指代法式称号,很重要的一个缘由是,可以在天生的日志文件称号里包括法式称号,最简单的方式应当是挪用一个 echo语句。
echo test >> $0.log

固然,你也许要增加一些代码,确保这个日志文件寄存在你希望的途径,日志称号包括你以为有用的信息。

4、交互输入


剧本法式的另一个好用的特征是可以在履行进程中接管输入,最简单的情况是让用户可以输入一些信息。
echo "enter a word please:"read wordecho $word

这样也可以让用户在法式履行中作出挑选。
read -p "Install Software ?? [Y/n]: " answif [ "$answ" == 'n' ]; then    exit 1fi    echo "Installation starting..."


5、出错退出履行


几年前,我写了个剧本,想在自己的电脑上安装最新版本的 Java 开辟工具包(JDK)。这个剧本把 JDK 文件解压到指定目录,建立更新一些标记链接,再做一下设备告诉系统利用这个最新的版本。假如解压进程出现毛病,在履行前面的操纵就会使全部系统上的 Java 破坏不能利用。因此,这类情况下需要停止法式。假如解压进程没有成功,就不应当再继续停止以后的更新操纵。下面语句段可以完成这个功用。
tar kxzmf jdk-8u221-linux-x64.tar.gz -C /jdk --checkpoint=.500; ec=$?if [ $ec -ne 0 ]; then     echo "Installation failed - exiting."     exit 1fi

下面的单行语句可以给你快速展现一下变量 $?的用法。
ls T; ec=$?; echo $ec

先用 touch T号令建立一个文件名为T的文件,然后履行这个单行号令,变量ec的值会是 0。然后,用rm T号令删除文件,再履行该单行号令,变量ec的值会是 2,由于文件T不存在,号令ls找不到指定文件报错。

在逻辑条件里操纵这个出错标识,参照前文我利用的条件判定,可以使剧本文件按需完成设定操纵。

结语


要完成复杂的功用,也许我们感觉应当利用诸如 Python、C 或 Java 这类的高级编程说话,但是并不尽然,剧本编程说话也很强大,可以完成类似使命。要充实发挥剧本的感化,有很多需要进修的,希望这里的几个例子能让你意想到剧本编程的强大。

via: https://opensource.com/article/20/1/improve-bash-scripts

作者:Alan Formy-Duval选题:lujun9972译者:fisherue校订:wxy

本文由 LCTT原创编译,Linux中国声誉推出

高端人脉微信群

高端人脉微信群

人脉=钱脉,我们相信天下没有聚不拢的人脉,扫码进群找到你所需的人脉,对接你所需的资源。

商业合作微信

商业合作微信

本站创始人微信,13年互联网营销经验,擅长引流裂变、商业模式、私域流量,高端人脉资源丰富。

精彩点评

相关推荐

有哪些超神的油猴脚本?

有哪些超神的油猴脚本?

小编在之前就介绍过很多油猴里的神器插件,这里给大家总结几款经典中的经典。01Usersc

一篇教会你写90%的shell脚本

一篇教会你写90%的shell脚本

shell是外壳的意思,就是操作系统的外壳。我们可以通过shell命令来操作和控制操作系统

脚本怎么写?250+个万能脚本,可直接套用!

脚本怎么写?250+个万能脚本,可直接套用!

作者:厚昌学院特聘讲师,厚昌学院顾问团队核心成员,从事互联网行业从事互联网行业8

浏览器辅助神器:油猴脚本使用教程

浏览器辅助神器:油猴脚本使用教程

前言「油猴脚本」是一段脚本代码,通过它可以让浏览器实现各种各样的扩展功能,和浏览

这100个shell脚本案例,你都知道吗?一篇教会你写90%的 ...

这100个shell脚本案例,你都知道吗?一篇教会你写90%的 ...

shell 是一个应用程序,它连接了用户和 Linux 内核,让用户能够更加高效、安全、低成

最新一波油猴脚本推荐:有了它们,你的浏览器就无敌了

最新一波油猴脚本推荐:有了它们,你的浏览器就无敌了

关注扩展迷、喜欢折腾电脑的小伙伴们,应该都对各种各样的浏览器插件不陌生了。浏览器

最强浏览器插件:油猴脚本的安装及使用教程

最强浏览器插件:油猴脚本的安装及使用教程

Tampermonkey 是一款免费的浏览器扩展和最为流行的用户脚本管理器,它适用于 Chrome,

油猴脚本管理器的超详细下载安装使用教程——新手必看

油猴脚本管理器的超详细下载安装使用教程——新手必看

油猴脚本管理器的超详细下载安装使用教程——新手必看油猴可以帮你干什么:全网VIP视

iPad随航脚本(Mac13.0Ventura)

iPad随航脚本(Mac13.0Ventura)

参考文章和视频:将iPad作为Mac Mini主屏幕的实现方法视频:无屏自动启动随航 iPad作为M

模板很齐全,视频脚本怎么写?50个短视频脚本文案模板 ...

模板很齐全,视频脚本怎么写?50个短视频脚本文案模板 ...

在运营短视频时,你有没有遇到过这样的问题:1、拍了一半发现拍摄场景不行;2、拍摄过

一个油猴脚本,让你体验真正的百度网盘下载不限速!

一个油猴脚本,让你体验真正的百度网盘下载不限速!

我们先看一下这个脚本的下载效果。我是100M的宽带,这直接能飙到20MB/s,所以下载速度

视频拍摄脚本怎么写?完整视频拍摄脚本范文实例分享

视频拍摄脚本怎么写?完整视频拍摄脚本范文实例分享

写脚本?对于没有视频背景的朋友来说可能就会有疑问,脚本是什么?不应该是电影,电视

「小白教程」让浏览器为所欲为!油猴脚本简介与使用心得

「小白教程」让浏览器为所欲为!油猴脚本简介与使用心得

本内容来源于@什么值得买APP,观点仅代表作者本人 |作者:Stark-C大家好,我是Stark-

Tampermonkey油猴插件——安装与使用教程

Tampermonkey油猴插件——安装与使用教程

​初次见面,大家好。相信熟悉浏览器的都知道,尤其是大名鼎鼎的Chrome浏览器,丰富的

这是我见过最牛的shell脚本100例,学习提升面试必备,建议收藏

这是我见过最牛的shell脚本100例,学习提升面试必备,建议收藏

从历史上看,shell一直是类Unix系统的原生命令行解释器。多年来,它已被证明是Unix的

网售几元钱的网红脚本,真是顶流主播的走红秘籍?

网售几元钱的网红脚本,真是顶流主播的走红秘籍?

有人说,网红行业的现状是江山代有才人出,各领风骚“好几天”。的确,即便是行业顶流

115最新转存脚本(可转存和提取SHA1版本)

115最新转存脚本(可转存和提取SHA1版本)

最近115调整了接口,导致115转存助手ui优化版3.8.1版本无法转存或获取SHA1。有大神在

视频脚本创作不完全指南

视频脚本创作不完全指南

根据第49次《中国互联网络发展状况统计报告》数据,截至2022年12月,我国网络视频(含

一文详解Shell脚本编程,从基础到进阶,通俗易懂一目了然

一文详解Shell脚本编程,从基础到进阶,通俗易懂一目了然

Shell脚本编程难,难于上青天!这话不假,尤其很多程序员新人,学了几个月Shell脚本写

好的短视频从脚本制作开始,学会这3招,还怕做不出好脚本?

好的短视频从脚本制作开始,学会这3招,还怕做不出好脚本?

在上期我们做了个形象的比喻,把短视频制作比喻成我们造房子,前面我们已经带领大家打

商业洽谈 文章投递 寻求报道
电话咨询: 15924191378
关注微信