如何编写基本的Shell脚本

2020年12月31日19:36:07 发表评论 47 次浏览

介绍

了解如何编写基本的Bash Shell脚本。尽管Shell脚本可能是执行复杂任务的冗长而复杂的脚本, 但你也可以学习如何在10分钟内编写一个简单的Shell脚本。如果你可以在命令行上运行命令, 那么学习如何编写基本的Bash脚本将很容易。

要求

  • 运行Linux的云服务器
  • 基本熟悉命令行

创建文件

转到你的主目录:

cd

注意:使用cd如果不带任何参数, 将自动将你带到主目录。

创建测试脚本的目录:

mkdir myscripts

移至该目录:

cd myscripts

创建一个名为myscript.sh并打开进行编辑:

nano hello

任何shell脚本的第一行必须是#!然后是你要用于脚本的外壳程序的路径。

由于我们将为Bash shell编写此脚本, 因此文件的第一行将是:

#!/bin/bash

任何其他以井号开头的行#将被脚本忽略。这使你可以向脚本中添加注释和注释。在第一行之后, 最好添加一些有关脚本用途的注释:

# A test script

添加命令并使其可执行

从命令行运行的任何命令都可以放入Shell脚本中。这很方便:

  • 你经常使用的命令。
  • 冗长的命令, 尤其是那些使用大量标志的命令。
  • 你希望服务器自动运行的命令计划工作.
  • 你永远不会记得的命令, 每次都必须查找。

在此示例中, 我们将使用将在命令行上回显单词" Hello world"的命令。将以下内容放入文件中:

echo "Hello world"

保存并退出文件。

该脚本需要可执行文件才能运行。使用以下命令授予脚本可执行文件权限:

chmod 755 hello

运行脚本

要运行脚本, 只需通过其文件路径调用它。由于你与脚本位于同一目录中, 因此可以在此处输入以下命令来运行它:

./hello

你可以通过键入完整的文件路径从服务器上的任何位置运行脚本:

/home/[your username]/myscripts/hello

将脚本添加到你的PATH

与shell脚本不同, 大多数Linux命令不需要你每次运行它们时都键入完整的文件路径。这是因为这些脚本在你的PATH中。

PATH是shell每次键入命令时都会检查的目录列表。你可以使用以下命令查看PATH:

echo $PATH

这将输出你的PATH中的目录列表:

jdoe@localhost:~$ echo $PATH
/home/jdoe/bin:/home/jdoe/.local/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games

有两种方法可以将Shell脚本添加到PATH中:

1.将Shell脚本移到PATH中已经存在的目录

你可以将Shell脚本移至列出的任何目录中, 以响应回声$ PATH命令。最佳做法是将你的个人shell脚本放入/ usr / local / bin目录:

sudo mv hello /usr/local/bin

然后, 你可以使用以下命令从任何地方运行脚本:

hello

2.将Shell脚本的目录添加到PATH

你可以使用以下命令将任何目录添加到PATH中:

export PATH=$PATH:[path to directory]

例如, 如果用户do想要添加/ home / jdoe / myscripts到PATH, 命令是:

export PATH=$PATH:/home/jdoe/myscripts

然后, 你可以使用以下命令从任何地方运行脚本:

hello

使用输入和变量

你的脚本可以使用变量, 并且可以提示用户输入。这将创建一个交互式脚本, 使你可以在每次运行时为其提供新信息。

让我们开始创建一个新文件, 名称为问候语并打开它进行编辑:

nano greetme

和以前一样, 确保脚本的第一行是外壳的路径:

#!/bin/bash

添加评论:

# A simple script to experiment with user input

脚本的第一行就是调用脚本时的内容:

echo -e "Hello user, please tell me which state you live in: "

注意:我们使用回声为此, 因为-e允许命令处理特殊字符。

下一行告诉脚本在提示时接受你的输入:

read state

最后一行是脚本的响应:

echo "I have heard that $state is lovely this time of year."

整个脚本的内容如下:

#!/bin/bash
# A simple script to experiment with user input

echo -e "Hello user, please tell me which state you live in: "
read state
echo "I have heard that $state is lovely this time of year."

保存并退出文件。然后使用以下命令使其可执行:

chmod 755 greetme

现在, 你可以运行文件并查看结果:

jdoe@localhost:~/myscripts$ greetme
Hello user, please tell me which state you live in:
California
I have heard that California is lovely this time of year.
一盏木

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: