bashでコマンドに条件付き文字列を渡す方法

bashでコマンドに条件付き文字列を渡す方法

私のリモートホストのIPを持つファイルが存在するかどうかに応じてパラメータを使用して実行し、それ以外の場合は他のパラメータなしでPHPコマンドを実行してエイリアスを指定しようとしています。

このバージョンが利用可能です。

#!/bin/bash
alias php="[ -f path/to/hostip ] && php -dxdebug.remote_host=\"$( < path/to/hostip )\" || php

2つの質問

  1. 長すぎる(贅沢問題)
  2. 呼び出すと、追加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
}

しかし、私はまだ問題があります。

  1. もっと長く(ラグジュアリー問題)
  2. php関数名のエイリアスとしては使用できません。

私が探しているのはニックネームphpいいね

alias php='php ( condition | true > pass file content as argument | false > pass nothing )'

エイリアスに追加のパラメータを渡すことができるようにしたいです。

ベストアンサー1

help command:

command: command [-pVv] command [arg ...]
    Execute a simple command or display information about commands.

したがって、command php "$@"関数内で実行すると、関数の再呼び出しを回避できます。または/usr/bin/php正しいパスを知る必要があります。

[ condition ] && php args.. || php other args関数内でこのトリックを引き続き使用できますが、php最初のphpコマンドが失敗した場合は後者のコマンドも実行されるため、if .. then .. elseより正確です。もちろん、これを1行のコードで書くこともできますが、関数を自分または.bashrcこのクラスに保存すると仮定すると、長さはそれほど重要ではありません。

おすすめ記事