簡體   English   中英

在 bash 函數名稱末尾使用加號

[英]Using a plus sign at the end of a bash function name

我需要創建一個名稱以+結尾的 bash 函數。 例如foo+ 這些工作:

+foo() { true; }
foo+bar() { true; }

但這不會:

foo+() { true; }
-bash: syntax error near unexpected token `}'

為什么不? 它不會抱怨+ 有沒有解決的辦法?

發生這種情況是因為+()是一個 extglob(啟用時),所以 bash 看到someglob { true; } someglob { true; }這是無效的。

這是它在沒有 extglob 的情況下工作:

$ shopt -u extglob
$ foo+() { echo bar; }

這是它與 extglob 的區別:

$ shopt -s extglob 
$ foo+() { echo bar; }
bash: syntax error near unexpected token `}'

解決方法包括在()之前添加一個空格或使用function關鍵字:

foo+ () { echo bar; }
function foo+() { echo bar; }

暫無
暫無

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

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