가 Bash's arrays 사용 (배시 배열없이), I 배열 변수에리스트를 저장하고 서로 공백 또는 특수 문자가 포함 된 인용 문자열 유지하면서 요소를 반복 :Bourne 쉘의 변수에 따옴표 붙은 문자열 목록을 저장하려면 어떻게합니까?
LIST=(--foo --bar --baz "test 1 2 3")
for item in "${LIST[@]}"; do
echo "$item"
done
출력된다 :
--foo
--bar
--baz
test 1 2 3
을
이 기능을 사용하는 스크립트가있어서 불행히도 Busybox의 ash (배열을 지원하지 않음)를 사용하려면이 포트를 사용해야합니다. 목록의 올바른 요소 수를 유지하면서 일부 항목이 공백 일 수있는 목록을 저장하는 좋은 방법을 찾아 내기 위해 노력하고 있습니다.
이것은 예를 들어, 작동하지 않습니다 (잘못 별도의 항목으로 test 1 2 3
분할) :
LIST='--foo --bar --baz "test 1 2 3"'
for item in $LIST; do
echo "$item"
done
출력은 다음과 같습니다
--foo
--bar
--baz
"test
1
2
3"
한 idea I found on the Busybox mailing list는 위치 매개 변수를 대체 할 set --
을 사용하는 것입니다 :
set -- --foo --bar --baz "test 1 2 3"
for item in "[email protected]"; do
echo "$item"
done
출력이 공동 rrect는 :
--foo
--bar
--baz
test 1 2 3
그러나,이 구성은 위치 인수 목록 ([email protected]
)이 스크립트 또한 용도 쳤을.
내 케이크를 먹을 수 있고 그것을 먹을 수있는 합리적인 방법이 있습니까? Bash가 아닌 다른 사람의 여러 임의의 배열을 시뮬레이션 할 수 있습니까 sh
변형?
\n
으로 변수를 선언 할 수