linux执行sh文件命令如何在Linux中运行一个Shell脚本

嘿,我们来谈谈运行 Linux 脚本吧。
在我从事问答论坛的 1 0 年里,我遇到了很多关于 Linux 脚本执行权限的问题。

例如,我们来分析一个真实的脚本示例:abhishek@itsfoss:~/Scripts$ cat cathello.sh echo "HelloWorld!"
这个东西很简单,就是一个打印“HelloWorld!”的脚本现在,要运行此脚本,有两种方法。

我们先说第一种方法,使用bash作为解释器来传递脚本名称。
像这样运行它:
bash cathello.sh
这种方法的优点在于脚本不需要执行权限来运行。
对于小型、简单的工作来说方便快捷。
不过,细节如下:你应该知道,这个东西是一个shell脚本。
如果您使用常规文本文件来执行此操作,它将不起作用,它会告诉您发生命令错误。

我们来说第二种方法,它直接指定要执行的脚本的路径。
这需要您首先提供脚本执行权限。
可以使用chmod来设置:
chmod u+x cathello.sh
然后,直接运行,输入脚本名称和路径,像这样:
./cathello.sh
注意,这前面的./非常关键。
这是因为当你在脚本所在的目录中时,你实际上是在说“我这里有这个文件,运行它”。

那么为什么我们不能直接使用脚本名称呢?这从 Linux PATH 环境变量开始。
这个东西告诉系统在哪里可以找到可执行文件。
例如,在我的系统上,PATH变量包含:
/home/abhishek/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
这些目录中具有权限的文件可以在任何地方执行。
你看,像 ls 这样的命令就在其中。

但是该脚本不在PATH中,因此需要指定脚本的路径。

那么为什么大多数脚本都以 !/bin/bash 开头?因为shell的实现有很多种,比如bash、zsh等。
这行代码告诉系统这个脚本是使用bash执行的。
如果不使用它,可能会遇到问题,因为不同 shell 的语法可能不同。

我希望这个解释可以帮助您理解为什么需要这样做。
虽然运行Linux脚本很简单,但是需要很多知识。
还有其他详细信息,例如不同 shell 之间的差异,我不会在本文中介绍。
如果还有什么疑问,欢迎继续讨论。
顺便说一下,LinuxHandbook 上有关于 Bash 的完整入门教程。
如果您有兴趣,可以查看一下。

请问我在Linux下想实现一个终端同时通过SSH执行其它多个终端内的shell脚本怎么实现?

那天在一家咖啡厅,我坐在笔记本电脑的屏幕上,上面排列着几个 SSH 窗口,我突然意识到批量执行命令是非常简单的。
想一想,第三天,我在北京的驻地同时打开了三个终端,用两个账号IP_1 02 -l和IP_1 03 -l分别做了字母sh1 02 .sh和sh1 03 .sh。
我没有使用任何工具,只是依靠shell命令行技巧,敲了敲一敲。
但显然这效率太低了。

然后我想出了一种方法将这两个命令放入本机文件中并用 && 连接它们,如下所示: 羞愧 ssh IP_1 02 -l User "sh1 02 .sh" && ssh IP_1 03 -l User "sh1 03 .sh"
这样,当一次执行完成后,下一次执行就会自动开始,就像流水线一样。
为了了解哪一个已完成、哪一个仍在等待,我在每个脚本的末尾添加了一个 echo 命令来完成同一台印刷机的日志。
例如sh1 02 .sh结尾如下: 羞愧 echo "sh1 02 .sh finish $(date)" >> /path/to/log.log
与 sh1 03 .sh 相同。
这样,我每隔几分钟就会打开 log.log 文件以获取最新的完成时间。
十点半我读到:
sh1 02 .sh 完成 2 02 3 -1 0-2 7 09 :3 5 :1 2
好的,这很好。
我突然想到另外一件事,万一其中一个脚本没有执行怎么办?可能需要添加一个链接来检查控件。

总之,批量执行加日志记录,简单实用。
但效率其实比手动执行每一项要高很多。
等等,还有一个问题,如果依赖于这两个服务器怎么办?例如,脚本IP_1 03 -l是否需要来自IP_1 02 -l的数据?然后可以添加一些更有逻辑性的句子。

linuxshell 脚本执行的过程是怎样的?

在 Linux 上运行 Shell 脚本有两种方法。

使用 shell 程序启动它。
例如bash,第一行!/bin/bash表示使用bash。
命令:bash myshell.sh。
例如sh,第一行!/bin/sh表示使用sh。
命令:sh myshell.sh。

二、直接执行脚本。
首先给可执行文件添加权限,使用chmod +x myshell.sh。
例如,在项目中使用 sudo chmod +x myshell.sh 为文件添加权限。
然后运行:./myshell.sh。

我不确定,但这是一种经历。
你自己掂量一下。