如何在 Linux 中使用 Shell 脚本执行命令
介绍
Shell 是一个命令行解释器,允许用户与系统进行交互。它负责从用户那里获取输入并显示输出。
Shell 脚本是按执行顺序编写的一系列命令。这些脚本可以包含函数、循环、命令和变量。脚本对于简化一系列复杂的命令和重复性任务很有用。
在本文中,您将学习如何在 Linux 中为命令行创建和执行 shell 脚本。
先决条件
要完成本教程,您需要:
- 熟悉使用终端。
- 熟悉文本编辑器。
- 熟悉
chmod
、mkdir
和cd
等命令。
入门
需要使用扩展名 .sh
保存 shell 脚本。
该文件需要以 shebang 行 (#!
) 开头,让 Linux 系统知道哪个解释器用于 shell 脚本。
对于支持 bash
的环境,请使用:
#!/bin/bash
对于支持 shell
的环境,使用:
#!/bin/sh
本教程假定您的环境支持 bash
。
Shell 脚本也可以有注释以增加可读性。一个好的脚本总是包含注释,以帮助读者准确理解脚本的作用以及设计选择背后的原因。
创建和运行基本 Shell 脚本
您可以使用 vi 编辑器、cat
命令或文本编辑器创建 shell 脚本。
在本教程中,您将学习如何使用 vi
创建 shell 脚本:
- vi basic_script.sh
这将启动 vi
编辑器并创建一个 basic_script.sh
文件。
然后,按键盘上的 i
启动 INSERT MODE
。添加以下行:
#!/bin/bash
whoami
date
此脚本运行命令 whoami
和 date
。 whoami
显示活动的用户名。 date
显示当前系统时间戳。
保存并退出 vi
编辑器:
- 按
ESC
- 键入
:
(冒号字符) - 输入
wq
- 按
ENTER
最后,您可以使用以下命令运行脚本:
- bash basic_script.sh
您可能会得到类似于以下内容的输出:
Outputroot
Fri Jun 19 16:59:48 UTC 2020
第一行输出对应于 whoami
命令。第二行输出对应于 date
命令。
您还可以在不指定 bash
的情况下运行脚本:
- ./basic_script.sh
以这种方式运行文件可能需要用户先授予权限。使用 bash
运行它不需要此权限。
Output~bash: ./basic_script.sh: Permission denied
命令 bash filename
只需要文件的read 权限。
而命令 ./filename
将文件作为可执行文件运行,并且需要 execute 权限。
要执行脚本,您需要更新权限。
- chmod +x basic_script.sh
此命令应用 chmod
并为当前用户提供 x
(可执行)权限。
在 Shell 脚本中使用变量
脚本可以包含用户定义的变量。事实上,随着脚本变得越来越大,拥有明确定义的变量和具有自我描述性名称的变量是必不可少的。
将以下行添加到脚本中:
#!/bin/bash
# This is a comment
# defining a variable
GREETINGS="Hello! How are you"
echo $GREETINGS
GREETINGS
是定义的变量,稍后使用 $
(美元符号)访问。变量被赋值的行中不应有空格。
运行脚本:
- bash basic_script.sh
这打印出分配给变量的值:
OutputHello! How are you
当脚本运行时,GREETINGS
被定义和访问。
从命令行读取输入
可以使 Shell 脚本与从命令行接受输入的能力交互。您可以使用 read
命令将命令行输入存储在变量中。
将以下行添加到脚本中:
#!/bin/bash
# This is a comment
# defining a variable
echo "What is your name?"
# reading input
read NAME
# defining a variable
GREETINGS="Hello! How are you"
echo $NAME $GREETINGS
变量 NAME
已用于接受来自命令行的输入。此脚本等待用户为 NAME
提供输入。然后打印 NAME
和 GREETINGS
。
OutputWhat is your name?
Sammy
Sammy Hello! How are you
在此示例中,用户提供了名称为提示的名称:Sammy
。
定义函数
用户可以在脚本中定义自己的功能。这些函数可以采用多个参数。
将以下行添加到脚本中:
#!/bin/bash
#This is a comment
# defining a variable
echo "What is the name of the directory you want to create?"
# reading input
read NAME
echo "Creating $NAME ..."
mkcd ()
{
mkdir "$NAME"
cd "$NAME"
}
mkcd
echo "You are now in $NAME"
此脚本要求用户提供目录名称。然后,它使用 mkdir
创建目录并 cd
进入它。
OutputWhat is the name of the directory you want to create?
test_dir
Creating test_dir ...
You are now in test_dir
在此示例中,用户已通过输入提供提示:test_dir
。接下来,该脚本使用该名称创建一个新目录。最后,脚本将用户的当前工作目录更改为 test_dir
。
结论
在本文中,您学习了如何在 Linux 中为命令行创建和执行 shell 脚本。
考虑一些您经常执行的重复性或耗时的任务,这些任务可能会从脚本中受益。
使用命令行中的参数继续您的学习。