简介
Shell是一个命令行解释器,允许用户与系统交互。它负责从用户获取输入并显示输出。
外壳脚本是按执行顺序编写的一系列命令。这些脚本可以包含函数、循环、命令和变量。脚本对于简化一系列复杂的命令和重复性任务非常有用。
在本文中,您将学习如何在Linux中创建和执行命令行的外壳脚本。
预约
要完成本教程,您需要:
- 熟悉使用terminal.
- 熟悉文本编辑器。
- 熟悉
chmod
、mkdir
、cd
等命令。
入门
外壳脚本需要以扩展名.sh
保存。
该文件需要以_shebang行_(# !
)开头,以便让Linux系统知道要为外壳脚本使用哪个解释器。
对于支持bash
的环境,用途:
1#!/bin/bash
对于支持shell
的环境,请使用:
1#!/bin/sh
本教程假设您的环境支持bash
。
外壳脚本还可以带有注释,以增加可读性。一个好的脚本总是包含注释,帮助读者准确地理解脚本正在做什么以及设计选择背后的原因。
创建并运行基本的外壳脚本
您可以使用vi编辑器、cat
命令或文本编辑器创建一个Shell脚本。
在本教程中,您将学习如何使用vi
创建一个外壳脚本:
1vi basic_script.sh
这将启动vi
编辑器并创建一个Basic_Script.sh
文件。
然后,按键盘上的i
启动插入模式
。添加以下行:
1[label basic_script.sh]
2#!/bin/bash
3whoami
4date
此脚本运行命令Who ami
和date
.vernami
显示活动的用户名。date
显示当前系统时间戳。
要保存并退出vi
编辑器:
- 按
ESC
- 类型
:
(冒号字符) - 输入
wq
- 按
Enter键
最后,您可以使用以下命令运行该脚本:
1bash basic_script.sh
您可能会得到类似于以下内容的输出:
1[secondary_label Output]
2root
3Fri Jun 19 16:59:48 UTC 2020
输出的第一行对应于woami
命令。输出的第二行对应于date
命令。
您也可以不指定bash
来运行脚本:
1./basic_script.sh
以这种方式运行文件可能需要用户首先授予权限。使用bash
运行不需要该权限。
1[secondary_label Output]
2~bash: ./basic_script.sh: Permission denied
命令bash filename
只需要文件的_read_ permission。
而命令./filename
将文件作为可执行文件运行,并且需要_EXECUTE_PERMISSION。
要执行该脚本,您需要更新permissions.
1chmod +x basic_script.sh
此命令应用chmod
,并将x
(可执行)权限授予当前用户。
在Shell脚本中使用变量
脚本可以包括用户定义的变量。事实上,随着脚本变得更大,拥有明确定义并具有自描述名称的变量是至关重要的。
在脚本中添加以下行:
1[label basic_script.sh]
2#!/bin/bash
3# This is a comment
4
5# defining a variable
6GREETINGS="Hello! How are you"
7echo $GREETINGS
GREETINGS
是定义的变量,之后使用$
(美元符号)进行访问。为变量赋值的行中不应该有空格。
运行脚本:
1bash basic_script.sh
这将打印出分配给变量的值:
1[secondary_label Output]
2Hello! How are you
脚本运行时,定义并访问GREETINGS
。
读取命令行输入
可以使外壳脚本与接受来自命令行的输入的能力交互。您可以使用read
命令将命令行输入存储在变量中。
将以下行添加到脚本中:
1[label basic_script.sh]
2#!/bin/bash
3# This is a comment
4
5# defining a variable
6echo "What is your name?"
7# reading input
8read NAME
9# defining a variable
10GREETINGS="Hello! How are you"
11echo $NAME $GREETINGS
已使用变量NAME
接受来自命令行的输入。该脚本等待用户输入NAME
。然后打印NAME
和GREETINGS
。
1[secondary_label Output]
2What is your name?
3Sammy
4Sammy Hello! How are you
在本例中,用户提供了名为Sammy
的提示符。
定义函数
用户可以在脚本中定义自己的函数。这些函数可以接受多个参数。
将以下行添加到脚本中:
1#!/bin/bash
2#This is a comment
3
4# defining a variable
5echo "What is the name of the directory you want to create?"
6# reading input
7read NAME
8
9echo "Creating $NAME ..."
10mkcd ()
11{
12 mkdir "$NAME"
13 cd "$NAME"
14}
15
16mkcd
17echo "You are now in $NAME"
该脚本要求用户输入目录名。然后使用mkdir
创建目录,并使用cd
进入目录。
1[secondary_label Output]
2What is the name of the directory you want to create?
3test_dir
4Creating test_dir ...
5You are now in test_dir
在本例中,用户提供了带有输入的提示:test_dir
。接下来,该脚本使用该名称创建一个新目录。最后,脚本将用户的当前工作目录更改为test_dir
。
结论
在本文中,您了解了如何在Linux中创建和执行命令行的外壳脚本。
考虑一下您经常执行的一些重复或耗时的任务,这些任务可能会从脚本中受益。