Linux
如何在bash中將條件字元串傳遞給命令
我試圖通過使用參數執行我的 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: 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
或其他的,長度應該無關緊要。