変数に複数のコマンドがありますか? [コピー]

変数に複数のコマンドがありますか? [コピー]

変数に格納された複数のコマンドを実行できますか?単一のコマンドが正常に動作します。

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"

おすすめ記事