当前位置: 首页 > 科技观察

关于编写Bash脚本您需要了解的一切

时间:2023-03-15 13:43:36 科技观察

Bash脚本可用于自动执行任务,您会发现它们非常适合构建简单的命令行应用程序。Bashshell解释Bash脚本,因此您无需安装任何依赖项即可编写和运行它们。Bash脚本也是可移植的,因为大多数基于Unix的操作系统都使用相同的shell解释器。Bash脚本知识是每个开发人员都必须掌握的,尤其是在使用基于Unix的系统时。Bash中的变量Bash变量区分大小写。要声明变量,请使用等号(=),名称在左边,值在右边:STATE=LinuxMi此声明分配给STATE的值是一个单词。如果您的值中需要空格,请在其周围使用引号:STATE="UbuntuLinux"您需要在其前面加上美元符号($)以引用其他变量或语句中的变量:STATE=LinuxMiLOCATION="MySiteis$STATE"PrintingValuesinBash在Bash中有几种打印变量的方法。您可以使用echo命令进行基本输出,或使用C风格的printf命令进行字符串格式化。STATE=LinuxMiLOCATION="MySiteis$STATE"echo$LOCATION声明STATE变量后,此脚本通过引用STATE定义LOCATION。如果然后使用echo打印LOCATION变量的最终值。printf关键字允许您使用格式化动词来输出数据。字符串格式化动词类似于C和Go中的动词,但动词有限。动词功能%C打印单个字符%o打印八进制%s打印字符串,与大小写无关%X打印小写十六进制%X打印大写十六进制%d打印整数%e打印小写浮点数的科学概念%E以大写形式打印科学概念浮点数%F打印浮点数%%打印百分号。这是一个使用带有print关键字的动词的示例。STATE=LinuxMi.comprintf"MySiteis%s"$STATEprintf函数将替换%s动词位置的STATE变量,输出将是“MyLocationisLagos”。Bash中的注释您可以使用井号或井号(#)符号在Bash中进行注释。shell自动忽略注释。#!/bin/bash#STATE=LinuxMi.com#LOCATION="MySiteis$STATE"没有多行注释。大多数IDE和文本编辑器都允许您使用Ctrl/Command+正斜杠(/)快捷方式进行注释。您应该能够使用快捷方式创建多个单行注释。在Bash中接收用户输入与许多其他编程语言一样,您可以在Bash中接收用户输入以使您的程序/脚本更具交互性。您可以使用读取命令来请求用户输入。读取响应在这种情况下,响应变量将保存用户在交付时的输入。echo"Whatdoyouwant?:"readresponsecho$response在上面的示例中,用户输入请求将换行。您可以将-n标志添加到echoprint语句以保留用户输入的行。echo-n“你想要什么。”阅读responsecho$response在Bash中声明数组Bash中的数组与大多数语言一样。您可以通过在括号中指定元素来在Bash中声明数组变量。Countries=('Ubuntu''Debian''CentOS',"openSUSE","Linuxmi.com")通过引用变量名访问数组会得到第一个元素。您可以使用星号作为索引来访问整个数组。echo${Countries[*]}您还可以指定数组的索引以访问特定元素。数组从零开始索引。echo"${Countries[4]}"Bash中的条件语句Bash为程序中的决策提供条件。下面是Bash中if-else语句的剖析。您必须使用分号来指定条件的结束。如果[[条件]];然后echostatement1elif[[condition]];然后echostatement2else[[condition]];然后echostatement3fi您必须以fi关键字结束每个if语句。如果[1==2];然后echooneelif[2==3];然后#else-ifechotwoelse[4>3];echo"correct,3"fi您可以在Bash程序的case语句中使用case关键字。您必须指定模式,然后在语句之前加上括号。NAME=LinuxMicase$NAMEin"Debian")#modeecho"Debianisoneofthelargestnon-commercialLinuxdistributionintheworld"#statement;;#caseend"LinuxMi"|"Ubuntu")echo"openSUSE";;“中央操作系统”|"甲骨文linux")回声"linux";;*)#defaultmodeecho"linuxmi.com"#defaultstatement;;esac#endofcasestatement您可以使用星号(*)符号作为模式来定义默认大小Write。case语句必须以esac关键字结尾。Bash中的循环根据您的需要,您可以使用while循环、范围for循环或C风格的for循环来重复操作。这是C风格的for循环示例。for循环必须以done关键字结束,并且必须以分号后跟do关键字结束for语句。对于((a=0;a<10;a+2));doecho$adone范围for循环对于处理文件和许多其他操作很方便。您需要在循环范围内使用in关键字。我在{1..7}中;doecho$1done这是一个简单的无限循环,用于演示Bashwhile循环的运行情况。linuxmi=1while[1-le5]#while1<5doecho$linuxmidone条件语句中的-le是一个小于二元运算符。Bash中的函数在Bash中声明函数不需要关键字。你用一个名字声明一个函数,然后在函数体前加上括号。print_working_directory(){echo$PWD#CallthePWDcommandfromthescript}echo"Thecurrentdirectoryis$(print_working_directory)"该函数可以返回Bash中的变量。您只需要return关键字。print_working_directory(){return$PWD}print_working_directory函数返回文件的工作目录。您可以用其他语言编写shell脚本Bash并不是您可以用来与操作系统的shell交互或构建命令行应用程序的唯一语言。您可以使用许多其他语言,例如Go、Python、Ruby和Rust。许多操作系统都预装了Python3,Python是一种流行的语言。如果您需要Bash脚本无法提供的更多功能,请考虑使用Python。