변수에 여러 명령이 있습니까? [복사]

변수에 여러 명령이 있습니까? [복사]

변수에 저장된 여러 명령을 실행할 수 있습니까? 단일 명령이 제대로 작동합니다.

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"

관련 정보