如何在Linux中使用Shell脚本执行命令
引言
Shell 是一个命令行解释器,允许用户与系统进行交互。它负责接收用户的输入并显示输出结果。
Shell脚本是按照执行顺序编写的一系列命令。这些脚本可以包含函数、循环、命令和变量。脚本有助于简化复杂的命令序列和重复的任务。
在本文中,您将学习如何在Linux命令行中创建和执行shell脚本。
先决条件
完成本教程需要以下物品:
- Familiarity with using the terminal.
- Familiarity with a text editor.
- Familiarity with commands like chmod, mkdir, and cd.
开始使用
一个shell脚本需要保存为.sh扩展名。
文件需以 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键以启动插入模式。添加以下行:
#!/bin/bash
whoami
date
此脚本运行了 whoami 和 date 命令。whoami 显示当前活动的用户名,date 显示当前系统时间戳。
保存并退出vi编辑器:
- Press ESC
- Type : (colon character)
- Type wq
- Press ENTER
最后,您可以使用以下命令运行脚本:
- bash basic_script.sh
您可能会得到类似下列的输出。
root Fri Jun 19 16:59:48 UTC 2020
输出的第一行对应于whoami命令。输出的第二行对应于date命令。
你也可以在未指定bash的情况下运行脚本。
- ./basic_script.sh
以这种方式运行文件可能需要用户先给予权限。使用bash运行它不需要这个权限。
~bash: ./basic_script.sh: Permission denied
bash文件名命令只需要对文件的读取权限。
当使用命令”./文件名”时,会将文件作为可执行文件运行,这需要执行权限。
要执行脚本,你需要更新权限。
- chmod +x basic_script.sh
这个命令使用chmod,并给当前用户增加x(可执行)权限。
在Shell脚本中使用变量
脚本可以包含用户定义的变量。事实上,随着脚本越来越大,拥有明确定义且具有自描述名称的变量变得至关重要。
在剧本中添加以下台词。
#!/bin/bash
# This is a comment
# defining a variable
GREETINGS="Hello! How are you"
echo $GREETINGS
问候是一个变量,通过$符号定义和访问。在给变量赋值的行里,不应该有空格。
运行脚本:
- bash basic_script.sh
这会打印出变量赋的值。
Hello! 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和问候语。
What 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进入其中。
What 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脚本。
考虑一些你经常执行的重复或耗时的任务,这些任务可能会受益于一个脚本。
继续通过学习if-else、数组和命令行参数来提升你的学习。