创建终端命令的 shell 脚本版本

1 shell-script

我刚刚开始学习 Linux 终端的基础知识,我对将终端命令转换为 shell 脚本有点困惑。我将如何在 Linux 终端中创建脚本文件并创建以下代码的 shell 脚本版本:

curl -O https://people.sc.fsu.edu/~jburkardt/data/csv/cities.csv
head -n 12 cities.csv
Run Code Online (Sandbox Code Playgroud)

Rom*_*nko 7

使用文本编辑器创建脚本

脚本被保存到文本文件中。您可以在文本编辑器中创建一个,例如geditnano

$ nano yourscript.sh
Run Code Online (Sandbox Code Playgroud)

一般的文件名和特别文件扩展名无关紧要。在您的脚本文件中,您必须声明解释器的可执行文件才能运行它(shebang)。然后添加您的代码。要将脚本保存在 中nano,请按Ctrl+ X,然后键入y并点击Enter

编写脚本

如果将参数传递给脚本,则可以在代码中按编号引用它们(第一个传递的参数是$1,第二个是$2,依此类推)。$0是脚本的名称本身。

作为一般规则,始终在 variables 周围使用双引号

以您的代码为例,脚本可能是:

#! /bin/bash
curl -O "$1"
head -n 12 cities.csv
Run Code Online (Sandbox Code Playgroud)

后面可以有空格#!,但不是必须的。在大多数情况下,您可以$0在终端中检查变量以获取解释终端中命令shell 可执行文件

$ echo $0
/bin/bash
Run Code Online (Sandbox Code Playgroud)

改进你的代码

假设您只需要下载文件的前 12 行,您可以跳过将下载的文件保存到磁盘并将其通过管道传输到下一个命令

#! /bin/bash
curl -s "$1" | head -n 12
Run Code Online (Sandbox Code Playgroud)

作为奖励,它允许您在脚本中省略文件名。

运行脚本

假设您将脚本另存为yourscript.sh,请先添加执行它的权限:

$ chmod +x yourscript.sh
Run Code Online (Sandbox Code Playgroud)

然后,要运行它,您需要指定它的路径并提供参数。如果它在当前目录中,您可以通过添加以下内容来指定它的路径./

$ ./yourscript.sh 'https://people.sc.fsu.edu/~jburkardt/data/csv/cities.csv'
Run Code Online (Sandbox Code Playgroud)

  • 确保对包含用户输入的所有变量使用引号(安全!):`curl -O "$1"` (3认同)