[email protected]
을 다른 함수의 다른 변수에 저장 한 후 어떻게 반복 할 수 있습니까?
참고 이것은 bash가 아니라 sh 쉘입니다.
내 코드 (슈퍼 간체) :
#! /bin/sh
set -- a b "c d"
args=
argv() {
shift # pretend handling options
args="[email protected]" # remaining arguments
}
fun() {
for arg in "$args"; do
echo "+$arg+"
done
}
argv "[email protected]"
fun
출력 : 내가 원하는
+b c d+
:
+b+
+c d+
특별한 변수 [email protected]
저장 보존 ARGV 공백. for 루프는 공백을 보존하는 [email protected]
을 반복 할 수 있습니다.
set -- a b "c d"
for arg in "[email protected]"; do
echo "+$arg+"
done
출력 :
+a+
+b+
+c d+
그러나 [email protected]
번
set -- a b "c d"
args="[email protected]"
for arg in "$args"; do
echo "+$arg+"
done
출력
+a b c d+
없이 따옴표 :
for arg in $args; do
echo "+$arg+"
done
출력 :이 배열을 사용하여 수행 할 수 있습니다 떠들썩한 파티에서
+a+
+b+
+c+
+d+
.
set -- a b "c d"
args=("[email protected]")
for arg in "${args[@]}"; do
echo "+$arg+"
done
출력 :
+a+
+b+
+c d+
해당이 쉬 쉘에서 수행 할 수 있습니까?
이 $ '처럼 배열 파라미터 또는 확장을 지원하지 않는 POSIX 쉘의 제한은 {@ 2}'. –