如何通过括号括起来在shell中执行函数,即:。
my_func()
{
echo $0
echo $1
}
my_func("aa","bb")
而不是那样
my_func "aa" "bb"
答案 0 :(得分:7)
你做不到。为什么要将一些其他语言的语法应用于shell?
答案 1 :(得分:1)
如何通过括号括起来在shell中执行函数?
试试这个:
my_func "(" ")"
答案 2 :(得分:1)
在大多数shell中,除了空(
形式的保留控件操作符之外,)
和()
不能包含bash。你可以逃避或引用,但这几乎没用。
您可以稍微滥用{
}
大括号扩展:
my_func {1,2,3}
因为{1,2,3}
扩展为“1 2 3”,但它也有其他功能。您必须确保其中没有(未引用的)空格,{1, 2, 3}
完全按原样处理。必须引用文字逗号或\
转义。你需要在函数名后面加一个空格,否则它会做一些不同的事情。
或者,如果你真的想玩游戏,[
]
也可能被滥用,与[
(又名test
)的工作方式完全不同,非平凡解析的代价。这是一个可以通过但不完美的例子,它说明了原因:
function my_func ()
{
local IFS=" ,"
set -- $*;
for ((ff=1; ff<=$#; ff++)); do
printf "\$%i=<%s> " $ff "${!ff}"
done
printf "\n"
}
my_func [ "a",b,c ]
my_func [ 1, 2 ,3 ]
bash
不是tcl
...如果您正在尝试编写有效为两种或更多种语言的程序,则应搜索polyglot程序。