我试图通过使用参数执行我的 php 命令来为我的 php 命令设置别名,具体取决于具有我的远程主机 IP 的文件是否存在,否则没有任何其他参数。
我得到它与这个版本一起工作
#!/bin/bash
alias php="[ -f path/to/hostip ] && php -dxdebug.remote_host=\"$( < path/to/hostip )\" || php
两个问题
- 太长了(奢侈问题)
- 当调用
php path/to/any/script
我的进一步参数时不会传递给 php 调用
我尝试了一个函数,它解决了问题 #2
#!/bin/bash
function phpx {
if [ -f path/to/hostip ]; then
php -dxdebug.remote_host="$( < path/to/hostip )" "$@"
else
php "$@"
fi
}
但我仍然有问题
- 它更长(豪华问题)
- 我不能
php
用作函数名的别名
我正在寻找的是like的别名php
alias php='php ( condition | true > pass file content as argument | false > pass nothing )'
我希望能够将我的进一步论点传递给别名。
help command
:因此,
command php "$@"
在函数内部运行,不要让它再次调用该函数。或者/usr/bin/php
,但是你需要知道正确的路径。您仍然可以
[ condition ] && php args.. || php other args
在函数中使用该技巧,但请注意,php
如果第一个php
命令失败,它也会运行后一个命令,因此if .. then .. else
更正确。当然,您也可以将其写为单行,但假设您将函数保存到您的.bashrc
或其他的,长度应该无关紧要。(这确实是一条评论,但需要格式化。使它成为社区维基)
请注意 (1)
与(2)根本不同
在这种情况下:当 A 成功但 B 失败时。发生这种情况时,C将在 (1) 中运行,但不在 (2) 中运行。
你可以让你的别名看起来像这样:
但是,当您可以编写不会污染全局变量名称空间的可读内容时,您为什么要这样做。