shell脚本执行命令语句 教你编写一个简单的shell脚本

在Linux中运行shell脚本有两种方式。您可以使用:bash script.sh或者,您可以像这样执行shell脚本:./script.sh可能很简单,但没有太多解释。别担心,我会用例子做必要的解释,这样你

本文最后更新时间:  2023-02-27 01:05:25

在Linux中运行shell脚本有两种方式。您可以使用:

bash script.sh

或者,您可以像这样执行shell脚本:

./script.sh

可能很简单,但没有太多解释。别担心,我会用例子做必要的解释,这样你就能理解为什么在运行shell脚本时会使用给定的特定语法格式。

我会用这行shell脚本让需要解释的东西尽量简单:

abhishek@itsfoss:~/Scripts$ cat hello.shecho "Hello World!"

1:通过将文件作为参数传递给shell来运行shell脚本。

第一种方法是将脚本文件名作为参数传递给shell。

考虑到bash是默认shell,您可以运行如下脚本:

bash hello.sh

你知道这种方法的优点吗?您的脚本不需要执行权限。非常方便快捷的简单任务。

如果你不熟悉,建议你。

记住,将它作为参数传递的需要是一个shell脚本。shell脚本由命令组成。如果使用普通的文本文件,它会报错命令。

在这个方法中,您必须明确指定您希望使用bash作为脚本的解释器。

Shell只是一个程序,bash只是shell的一个实现。还有其他的shell程序,比如ksh,zsh等等。如果您安装了其他shell,也可以使用它们来代替bash。

例如,我已经安装了zsh,并使用它来运行相同的脚本:

2:通过指定shell脚本的路径来执行脚本。

运行shell脚本的另一种方法是提供它的路径。但是在你这样做之前,你的文件必须是可执行的。否则,当您尝试执行该脚本时,将会出现“权限被拒绝”的错误。

因此,您首先需要确保您的脚本具有可执行权限。您可以使用chmod命令将此权限授予您自己的脚本,如下所示:

chmod u+x script.sh

在使您的脚本可执行后,您只需要输入文件名及其绝对路径或相对路径。大多数时候,你都在同一个目录下,所以你可以这样使用它:

./script.sh

如果与脚本不在同一个目录中,可以指定脚本的绝对路径或相对路径:

这个。/之前的脚本很重要(当你和脚本在同一个目录的时候)。

为什么在同一个目录下不能用脚本名?这是因为您的Linux系统会在PATH环境变量中指定的几个目录中查找可执行文件。

下面是我的系统的PATH环境变量的值:

abhishek@itsfoss:~$ echo $PATH/home/abhishek/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin

这意味着以下目录中具有可执行权限的任何文件都可以在系统中的任何位置运行:

/home/abhishek/.local/bin/usr/local/sbin/usr/local/bin/usr/sbin/usr/bin/sbin/bin/usr/games/usr/local/games/snap/bin

Linux命令的二进制文件或可执行文件(如ls、cat等。)位于其中一个目录中。这就是为什么您可以通过使用它们的名称在系统中的任何地方运行这些命令。看,ls命令位于/usr/bin目录下。

当您在未指定绝对路径或相对路径的情况下使用脚本时,系统将无法在PATH环境变量中找到提到的脚本。

为什么大部分shell脚本都包含#!在他们的头上?/bin/bash?

我记得提过shell只是一个程序,shell程序有不同的实现。

当你使用#!/bin/bash,您特别指定bash作为运行脚本的解释器。如果你不这样做,并运行一个脚本。/script.sh,它通常会在您正在运行的shell中运行。

有什么问题吗?可能有。看,大多数shell语法对于大多数类型的shell都是通用的,但是有些语法可能是不同的。

例如,bash和zsh中数组的行为是不同的。在zsh中,数组索引从1开始,而不是从0开始。

用#!/bin/bash来标识该脚本是一个bash脚本,并且应该使用bash作为脚本的解释器来运行,而不管系统上使用的是什么shell。如果使用zsh的特殊语法,可以在脚本的第一行加上#!/bin/zsh将其标识为zsh脚本。

在#!/bin/bash之间的空格没有效果。也可以用#!/bin/bash .

有帮助吗?

希望这篇文章能增加你对Linux的了解。如果您还有问题或建议,请留下评论。

专家可能还是会挑出我漏掉的。但这个首要主题的问题是,不容易找到信息的平衡,避免过多或过少的细节。

如果您对学习bash脚本感兴趣,我们的网站Linux Handbook上有完整的Bash初学者系列,它侧重于系统管理。如果你愿意,还可以购买带有附加练习的电子书来支持Linux手册。

温馨提示:内容均由网友自行发布提供,仅用于学习交流,如有版权问题,请联系我们。