是否可以执行存储在变量中的多个命令? Single 命令工作正常
variable="echo HELLO"
$variable
你好
我想要这样的东西
variable="echo HELLO; echo WORLD"
你好
世界
不是
你好;回声世界
答案1
你需要使用数组(这实际上不是一个变量......)
cmds_array+=( 'echo "Hello"' )
cmds_array+=( 'echo "World ..."' )
for cmd in "${cmds_array[@]}"; do $cmd ; done
或者:用 awk 解析你的变量(但可能不太便携:很多东西可能包含“;”而不是命令分隔符......)
execute_all_cmds () {
awk -v cmds="${1}" '
BEGIN { n=split(cmds, cmd, ";")
for(i=1; i<=n; i++) { system( cmd[i] ) }
} '
}
cmds='echo "hello" ; echo "World"'
execute_all_cmds "$cmds"