如何创建 bash 文件并允许它接受来自终端的参数?

如何创建 bash 文件并允许它接受来自终端的参数?

为了唤起怀旧之情,我想起了 DOS 上的 .bat 文件。:)

事情是这样的:每次我需要为给定的 Web 应用程序生成文档时,我必须:

sudo phpdoc -o HTML:frames:earthli -d public_html/yoursite.dev/application/ -t public_html/yoursite.dev/docs/

有没有办法为上述内容创建快捷方式,以便我们只需输入:

sudo generateDoc.sh -a yoursite.dev

甚至更好:

sudo generateDoc.sh -theVariableThatNeedsTobeChangedOnBashHere

因此,如果我们在命令行中传递了 yoursite.dev,那么 bash 中就会有 yoursite.dev,如果我们写入 yoursite2.dev,那么 bash 中就会有 yoursite2.dev 等等……

有什么线索吗?

多谢。

答案1

尝试这个:

#!/bin/bash
phpdoc -o HTML:frames:earthli -d public_html/"$1"/application/ \
    -t public_html/"$1"/docs/

称之为sudo ./script.sh yoursite

答案2

您也可以将此函数放在您的 .bashrc 中:

generateDocs() {
    sudo phpdoc -o HTML:frames:earthli \
                -d "public_html/$1/application/" \
                -t "public_html/$1/docs/"
}

然后

generateDocs yoursite.dev

答案3

这是我编写的一个示例脚本。$*意思是“传递的所有参数”。重要的是,它们放在引号中,否则空格会破坏命令。顺便说一句,Quodlibet 是一个很棒的音乐库/播放器。

jake@daedalus:~$ cat bin/play
#!/bin/bash
quodlibet --query "$*"
quodlibet --next
jake@daedalus:~$ play garrison keillor rhubarb pie

就像 Fido 所说的那样,不要忘记将文件设置为可执行文件chmod +x programName

你可能考虑在你的主文件夹中创建一个bin目录并将其添加到你的$PATH。然后无论你在哪个文件夹中,你都可以调用该命令。我的 .bashrc 中有这行:PATH=$HOME/bin:$PATH。如果你不这样做,你必须在调用脚本时使用绝对路径或相对路径,即:

jake@daedalus:/usr/local/share/docs$ /home/jake/bin/play foo fighters everlong
jake@daedalus:~/bin$ ./play placebo where is my mind

我强烈推荐Grymoire 的 SH 脚本指南. 你需要做的是使用 shell 的位置参数接受参数并将其插入到命令中。还有TLDP更深入地处理BASH 的位置参数。我会先阅读 Grymoire 的书,然后在您准备好更深入地了解该主题时再阅读 TLDP。

答案4

打开您喜欢的文本编辑器,粘贴以下内容:

args=("$@")
sudo phpdoc -o HTML:frames:earthli -d public_html/${args[0]}/application/ -t public_html/${args[0]}/docs/

并将其另存为(在本例中)“generateDoc.sh”。接下来要做的是授予文件执行权限,因此打开终端并运行:$ chmod +x generateDoc.sh
现在您需要做的就是调用该文件:这里$ ./generateDoc.sh yoursite.dev不需要sudo,因为它已经在 sh 文件中了。

希望这可以帮助!

相关内容