开始编写 Bash 程序所需知道的一切

[*]

[*]Bash 脚本可用于自动化任务,您会发现它们非常适合构建简单的命令行应用程序。 Bash shell 解释 Bash 脚本,因此您无需安装任何依赖项即可编写和运行它们。 Bash 脚本也是可移植的,因为大多数基于 Unix 的操作系统都使用相同的 shell 解释器。

[*]每个开发人员都必须具备 Bash 脚本知识,尤其是在您使用基于 Unix 的系统时。

Bash 中的变量

[*]Bash 变量区分大小写。 要声明变量,请使用等号 (=) 左边是名字,右边是值:

STATE=Washington[*]

[*]此声明分配给的值 状态 是一个词。 如果您的值中需要空格,请在其周围使用引号:

STATE="North Arizona"[*]

[*]您需要使用美元符号 ($) 在其他变量或语句中引用变量的前缀:

STATE=Washington[*]LOCATION="My Location is $STATE"[*]

在 Bash 中打印值

[*]有几种方法可以在 Bash 中打印变量。 您可以使用 回声 基本输出或 C 风格的命令 打印 字符串格式化命令。

STATE=Washington[*]LOCATION="My Location is $STATE"[*]echo $LOCATION[*]

[*]声明后 状态 变量,这个脚本定义 地点 通过引用状态。 如果 then 使用 echo 打印 LOCATION 变量的最终值。

[*] 这 打印 关键字允许您使用格式化动词来输出数据。 字符串格式化动词类似于 C 和 Go 中的动词,但动词有限。

动词 功能性
%C 打印单个字符
%o 打印八进制
%s 打印字符串,独立于大小写
%X 打印小写十六进制
%X 打印大写十六进制
%d 打印整数
%e 以小写形式打印科学概念浮点数
%E 以大写形式打印科学概念浮点数
%F 打印浮点数
%% 打印一个百分比符号。

[*]这是一个使用动词的例子 打印 关键词。

STATE=Lagos[*]printf "My Location is %s" $STATE[*]

[*]这 打印 函数将替代 状态 位置可变 %s 动词,输出将是“我的位置是拉各斯”。

Bash 中的评论

[*]您可以在 Bash 中使用哈希或磅 (#) 象征。 shell 会自动忽略注释。

#!/bin/bash[*]# STATE=Washington[*]# LOCATION="My Location is $STATE"[*]

[*]没有多行注释。 大多数 IDE 和文本编辑器允许您使用 Ctrl/Command + 正斜杠 (/) 快捷方式进行注释。 您应该能够使用快捷方式创建多个单行注释。

在 Bash 中接收用户输入

[*]像许多其他编程语言一样,您可以在 Bash 中接收用户输入,以使您的程序/脚本更具交互性。 您可以使用 命令来请求用户的输入。

read response[*]

[*]在这种情况下, 回复 变量将保存用户在交付时的输入。

echo "What do you want ?: "[*]read response[*]echo $response[*]

[*]在上面的示例中,用户输入请求将位于新行上。

[*] 您可以添加 -n 标志 回声 print 语句保留用户输入输入的行。

echo -n "What do you want."[*]read response[*]echo $response[*]

在 Bash 中声明数组

[*]Bash 中的数组就像大多数语言一样。 您可以通过在括号中指定元素来在 Bash 中声明一个数组变量。

Countries=('USA' 'Russia' 'Ukraine', "England", "Taiwan", "China")[*]

[*]通过引用变量名访问数组将获取第一个元素。 您可以使用星号作为索引来访问整个数组。

echo ${Countries[*]}[*]

[*]您还可以指定数组的索引来访问特定元素。 数组的索引从零开始。

echo "${Countries[4]}"[*]

Bash 中的条件语句

[*]Bash 为程序中的决策提供条件。

[*]这是 Bash 中 if-else 语句的剖析。 您必须使用分号来指定条件的结束。

if [[ condition ]]; then[*]echo statement1[*]elif [[condition ]]; then[*]echo statement2[*]else [[condition ]]; then[*]echo statement3[*]fi[*]

[*]你必须结束每一个 如果 与声明 关键词。

if [ 1 == 2 ]; then[*]echo one [*]elif [ 2 == 3 ]; then #else-if[*]echo two[*]else [ 4 > 3 ]; [*]echo "correct, 3"[*]fi[*]

[*]您可以在 Bash 程序中使用 case 语句,使用 案子 关键词。 您必须在语句之前指定模式,后跟括号。

CITY=Lagos[*]case $CITY in[*]  "Washington") # pattern [*]echo "United States of America" # statement[*]    ;; # end of a case[*]  "Lagos" | "Abuja")[*]echo  "Nigeria"[*]    ;;[*]  "Johannesburg" | "Cape Town")[*]echo  "South Africa"[*]    ;;[*]  *) # default pattern[*]echo "Antarctica" # default statement[*]    ;;[*]esac # end of the case statement[*]

[*]您可以使用星号定义默认情况 签名作为模式。 案例陈述必须以 经社理事会

关键词。

[*]Bash 中的循环

[*]根据您的需要,您可以使用 while 循环、范围 for 循环或 C 样式的 for 循环进行重复操作。 这是 C 风格的 for 循环的示例。 For 循环必须以 完毕 关键字,并且您必须以分号结束 for 语句,后跟

for ((a = 0 ; a < 10 ; a+2)); do[*]echo $a[*]done[*]

[*]关键词。 对于处理文件和许多其他操作,for 循环的范围很方便。 您需要使用

for i in {1..7}; do[*]echo $1[*]done[*]

[*]范围为 for 循环的关键字。 这是一个简单的无限循环来演示 Bash 尽管

name=1[*]while [ 1 -le 5 ] # while 1 < 5[*]do[*]echo $name[*]done[*]

[*]循环在行动。 – 这

在条件语句中是小于的二元运算符。

[*]Bash 中的函数

print_working_directory() {[*]echo $PWD  #calling the PWD command from the script[*]}[*]echo "You are in $(print_working_directory)"[*]

[*]在 Bash 中声明函数不需要关键字。 您可以使用名称声明函数,然后在函数体之前加上括号。 函数可以在 Bash 中返回变量。 您所需要的只是 返回

print_working_directory() {[*]return $PWD[*]}[*]

[*]关键词。 打印工作目录

函数返回文件的工作目录。

[*]您可以用其他语言编写 Shell 脚本

[*]Bash 并不是您可以用来与操作系统的 shell 交互或构建命令行应用程序的唯一语言。 您可以使用许多其他语言,例如 Go、Python、Ruby 和 Rust。

许多操作系统都预装了 Python3,Python 是一种流行的语言。 如果您需要比 Bash 脚本提供的更多功能,请考虑使用 Python。

[*]