Linux

如何在bash中將條件字元串傳遞給命令

  • December 12, 2017

我試圖通過使用參數執行我的 php 命令來為我的 php 命令設置別名,具體取決於具有我的遠端主機 IP 的文件是否存在,否則沒有任何其他參數。

我得到它與這個版本一起工作

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

兩個問題

  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用作函式名的別名

我正在尋找的是like的別名php

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

我希望能夠將我的進一步論點傳遞給別名。

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更正確。當然,您也可以將其寫為單行,但假設您將函式保存到您的.bashrc或其他的,長度應該無關緊要。

引用自:https://unix.stackexchange.com/questions/410404