我想用函数串联函数中指定的命令并在之后执行它 我将用一个例子来简化我的需要来执行“ls -l -a”
#!/bin/bash
echo -e "specify command"
read command # ls
echo -e "specify argument"
read arg # -l
test () {
$command $arg
}
eval 'test -a'
除了
答案 0 :(得分:0)
#!/bin/bash
echo -e "specify command"
read command # ls
echo -e "specify argument"
read arg # -l
# using variable
fun1 () {
line="$command $arg"
}
# call the function
fun1
# parameter expansion will expand to the command and execute
$line
# or using stdout (overhead)
fun2 () {
echo "$command $arg"
}
# process expansion will execute function in sub-shell and output will be expanded to a command and executed
$(fun2)
它将适用于给定的问题但是要理解它是如何工作的,看看shell扩展并且必须注意执行任意命令。
在执行命令之前,可以通过printf '<%s>\n'
作为前缀来显示将要执行的内容。
答案 1 :(得分:0)
使用数组,如下所示:
args=()
read -r command
args+=( "$command" )
read -r arg
args+=( "$arg" )
"${args[@]}" -a
如果你想要一个功能,那么你可以这样做:
run_with_extra_switch () {
"$@" -a
}
run_with_extra_switch "${args[@]}"