我试图做这样的安装功能:
function call_fedora(){
yum -y install $1;
}
function network_tools(){
tools='net-tools traceroute nmap'
call_fedora $tools;
}
但是,当我调用network_tools函数时,仅net-tools
作为参数传递给call_fedora
。我希望致电是:
yum -y install net-tools traceroute nmap
Bash实际上将call_fedora
整个字符串net-tools traceroute nmap
作为一个参数传递。我知道在bash中执行所需操作的一种可靠方法是使用数组扩展:
function call_fedora(){
yum -y install "$@" # "$@" means "$1" "$2" ...
}
function network_tools(){
tools=(net-tools traceroute nmap "some funky package with spaces")
call_fedora "${tools[@]}"
# keep relationship between array elements and args of call_fedora
}
的"$@"
装置,其每个参数来call_fedora
将作为一个单独的参数传递yum
。双引号表示参数可以包含空格(这是一个好习惯)。
然后,您需要确保将您tools
作为单独的参数传递给call_fedora
。将它们制成数组可以很容易地将它们分开。可以"${tools[@]}"
为您提供每个数组元素作为单独的参数,并用正确的引号引起来(原始来源)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句