Estou tentando criar um alias para meu comando php, executando-o com um argumento, dependendo da existência de um arquivo com o IP do meu host remoto, sem nenhum argumento adicional.
Eu consegui trabalhar com esta versão
#!/bin/bash
alias php="[ -f path/to/hostip ] && php -dxdebug.remote_host=\"$( < path/to/hostip )\" || php
Dois problemas
- é muito longo (problema de luxo)
- ao chamar
php path/to/any/script
meus outros argumentos não são passados para a chamada php
Eu tentei uma função, que resolve o problema nº 2
#!/bin/bash
function phpx {
if [ -f path/to/hostip ]; then
php -dxdebug.remote_host="$( < path/to/hostip )" "$@"
else
php "$@"
fi
}
Mas ainda tenho problemas
- é muito mais longo (problema de luxo)
- Não posso usar
php
como alias para o nome da função
O que estou procurando é um alias para php
like
alias php='php ( condition | true > pass file content as argument | false > pass nothing )'
E quero poder passar meus argumentos adicionais para o pseudônimo.
help command
:Portanto, execute
command php "$@"
dentro da função para que ela não chame a função novamente. Ou/usr/bin/php
, mas então você precisa saber o caminho correto.Você ainda pode usar o
[ condition ] && php args.. || php other args
truque dentro da função, mas observe que ele executará o últimophp
comando também se o primeirophp
comando falhar, portanto,if .. then .. else
é mais correto. É claro que você também pode escrever isso como uma linha, mas supondo que esteja salvando a função em seu.bashrc
ou algo assim, o comprimento não deve importar muito .(Este é realmente um comentário, mas precisa ser formatado. Tornou-se wiki da comunidade)
Observe que (1)
é fundamentalmente diferente de (2)
nesta situação: quando A é bem-sucedido, mas B falha. Quando isso acontecer, C será executado em (1), mas não em (2).
Você pode fazer seu alias ficar assim:
mas por que você faria isso quando poderia escrever algo legível que não polui o namespace da variável global.