如何在 Linux 中使用 Shell 脚本执行命令

简介

Shell是一个命令行解释器,允许用户与系统交互。它负责从用户获取输入并显示输出。

外壳脚本是按执行顺序编写的一系列命令。这些脚本可以包含函数、循环、命令和变量。脚本对于简化一系列复杂的命令和重复性任务非常有用。

在本文中,您将学习如何在Linux中创建和执行命令行的外壳脚本。

预约

要完成本教程,您需要:

  • 熟悉使用terminal.
  • 熟悉文本编辑器。
  • 熟悉chmodmkdircd等命令。

入门

外壳脚本需要以扩展名.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 amidate.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。然后打印NAMEGREETINGS

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中创建和执行命令行的外壳脚本。

考虑一下您经常执行的一些重复或耗时的任务,这些任务可能会从脚本中受益。

在命令行中使用if-elsearrays,和arguments继续学习。

Published At
Categories with 技术
Tagged with
comments powered by Disqus