변수에 저장된 여러 명령을 실행할 수 있습니까? 단일 명령이 제대로 작동합니다.
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"