簡體   English   中英

在 Bash 別名/功能中使用參數

[英]Using a Parameter in a Bash Alias/Function

我正在嘗試創建一個有用的 bash 別名/函數。 我似乎無法正確解釋字符串參數。

alias phpr="php -r '${*}'"
alias decode="php -r 'echo base64_decode($1);'"

function phpr ()
{
    php -r "${*}"
}

function decode ()
{
    php -r "echo base64_decode($1);"
}

我如何嘗試使用 decode 並失敗的示例:

decode "MT0xO2JhbGFuY2VfaXNfc2hvd249MDtiZXRfYW1vdW50PTE7YmV0X3R5cGU9MTE7ZmF2b3JpdGVfdHJhY2sxPUZSRTtmYXZvcml0ZV90cmFjazI9TU1BO2Zhdm9yaXRlX3RyYWNrMz1UQU07ZmF2b3JpdGVfdHJhY2s0PU1FRDtmYXZvcml0ZV90cmFjazU9QVFVO3dhZ2VyX3N0YXR1cz0wO2N1cnJlbnRUcmFjaz1GUkU7Y3VycmVudFJhY2U9NjtyYWNlRGF0ZT0yMDExLTA0LTI4O3JhY2V1cGRhdGVkPTs%3D"

PHP Warning:  base64_decode() expects at least 1 parameter, 0 given in Command line code on line 1
PHP Stack trace:
PHP   1. {main}() Command line code:0
PHP   2. base64_decode() Command line code:1

我不確定什么時候我會使用 function 與此類情況的別名。

對於您的別名 - 別名不帶參數。 您是否嘗試過alias phpr="php -r"

對於 function - 它可能是在您的字符串中解析的內容。 雙引號允許解析,單引號逐字獲取字符串。 您希望$1被解析,但包含任何空格,您想要雙引號。 但是你可以為它的 rest 做單引號:

function decode ()
{
    php -r 'echo base64_decode('"$1"');'
}

請注意,這包括 4 個單引號和 2 個雙引號。

編輯更新了格倫的變化。 如果 php 需要將參數放在引號中,您可能需要執行以下操作:

function decode ()
{
    php -r 'echo base64_decode("'"$1"'");'
}

請注意,這包括 4 個單引號和 4 個雙引號。

啊,shell 腳本...

我可以立即回答您的問題的一部分:Bash 別名不能采用 arguments。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM