首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使sh脚本在终端中执行命令

如何使sh脚本在终端中执行命令
EN

Ask Ubuntu用户
提问于 2022-11-04 17:09:22
回答 2查看 142关注 0票数 1

我最近养成了编程的习惯。我看到了这个教程,它允许我使用一个名为SearXNG的程序,它允许我制作自己的私有搜索引擎。(顺便说一下,本教程请点击这里)这使我不得不执行这个命令,特别是要运行搜索引擎:

代码语言:javascript
复制
cd searxng-docker && sudo docker-compose up -d

(顺便说一下,cd在那里,因为searxng-docker是安装代码的目录)

现在,我想创建一个sh脚本,如果我运行,那么搜索引擎将自动启动。我已经看过多个教程,这些教程向我展示了如何在sh脚本中编写代码,但没有一个是有用的。

代码语言:javascript
复制
exec cd searxng-docker && sudo docker-compose up -d

我试着把它放到脚本中,它打开了终端,但是没有执行命令。我该怎么解决这个问题?

EN

回答 2

Ask Ubuntu用户

回答已采纳

发布于 2022-11-06 11:45:44

Well...thanks所有试图回答我问题的人,但我自己找到了答案。所以,如果你想找到这个问题的答案,那就别再看这个了。

首先要澄清一下。所有.sh脚本都可以用来运行bash命令。你只需要添加一条线就行了。

SHEBANG行指定将使用哪个应用程序运行脚本。这个应用程序可以是任何东西,从Python到Bash。

要使脚本使用bash运行,我们所做的是在脚本的开头键入以下内容:

代码语言:javascript
复制
#!/bin/bash

现在我们已经添加了SHEBANG行,这个脚本中的所有行都将作为bash命令运行。

接下来,我们可以简单地添加想要执行的命令。现在,脚本将如下所示:

代码语言:javascript
复制
#!/bin/bash
cd searxng-docker
sudo docker-compose up -d

现在,我们可以做一个简单的更改,以使脚本更高效一些。如果您查看cd行,您可以看到我们正在光盘到searxng-docker文件夹中。这意味着cd命令指向文件夹的相对位置。这很糟糕,就好像我们在主目录之外的任何其他目录中一样,cd命令将无法工作。

要解决这个问题,我们必须将cd searxng-docker命令替换为cd /home/<your-username>/searxng-docker命令。不要忘记用您的真实用户名替换<your-username>

现在,只剩下一个问题。使脚本可执行。

为此,输入终端:chmod +x ./<your-script-name>,然后再次用您创建的脚本的名称替换<your-script-name>

现在您的脚本已经准备好了,您可以通过右键单击脚本并选择“replacing”来执行它,或者在终端中键入./<your-script-name>,再次将<your-script-name>替换为您创建的脚本的名称。

票数 1
EN

Ask Ubuntu用户

发布于 2022-11-05 09:46:21

代码语言:javascript
复制
exec cd searxng-docker && sudo docker-compose up -d

首先,在我们讨论你的具体情况之前,先做一个一般性的解释。此命令将首先更改目录(cd改为searxng-docker)。只有在成功的情况下(&&),才会运行以下命令。

正如当前所写的,脚本要求您在包含searxng-docker目录的目录中。否则,第二个命令将不会继续执行。

要确保脚本可以独立于当前目录启动,请将相对路径searxng-docker更改为绝对路径(例如,如果该目录驻留在用户usrname的主目录中,则为/home/username/searxng-docker )。

在您的特殊情况下,由于您更改目录以查找可执行文件,有一个更好的解决方案:用其绝对路径名称替换直接启动可执行文件的整行:

代码语言:javascript
复制
#!/bin/sh
sudo /home/username/searxng-docker/docker-compose up -d
票数 0
EN
页面原文内容由Ask Ubuntu提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://askubuntu.com/questions/1439107

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档