变量中的多个命令?

变量中的多个命令?

是否可以执行存储在变量中的多个命令? 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"

相关内容