Hel*_*elp 2 linux macos bash terminal function
我想创建256个执行相同操作的函数
基本上我想要一个能够不区分大小写的函数.
示例:我希望applepie()
能够不区分大小写地调用:
applepie(){
for B in "$@";
do
another_function_in_my_bash_profile $B
blah blah
# more stuff ...
done
}
Run Code Online (Sandbox Code Playgroud)
最直接的方法是声明另外255个函数,其中包含一些字母:
Applepie(){
for B in "$@";
do
another_function_in_my_bash_profile $B
blah blah
# more stuff ...
done
}
Run Code Online (Sandbox Code Playgroud)
和
aPplepie(){
for B in "$@";
do
another_function_in_my_bash_profile $B
blah blah
# more stuff ...
done
}
Run Code Online (Sandbox Code Playgroud)
...
一直到
APPLEPIE(){
for B in "$@";
do
another_function_in_my_bash_profile $B
blah blah
# more stuff ...
done
}
Run Code Online (Sandbox Code Playgroud)
它们总共有256个(2个为8的幂)
是否可以快速完成?或者是否有更"内置"的方法
case-insensitive appelepie(){
for B in "$@";
do
another_function_in_my_bash_profile $B
blah blah
# more stuff ...
done
}
Run Code Online (Sandbox Code Playgroud)
或者是否可以这样做
case-insensitive APPLEPIE(){
command -pass_all_parameters applepie
}
Run Code Online (Sandbox Code Playgroud)
可以将所有参数传递给applepie而不是使用for循环for B in "$@";
?
您可以通过定义全小写函数名称伪造不区分大小写的函数名称,并使用bash
陷阱来丢失命令名称(需要bash
4,您需要在OS X上自行安装):
command_not_found_handle () {
cmd_name=${1,,}
shift
$cmd_name "$@"
}
Run Code Online (Sandbox Code Playgroud)
因此,如果apple
是函数,但是您尝试将其称为ApPlE
,command_not_found_handle
则使用命令作为参数调用.第一行采用第一个参数(ApPlE
)并将其小写.然后它尝试apple
使用原始参数运行.