POSIX 호환 방식으로 개행 문자가 포함된 변수를 반복하려고 합니다.
다음은 작동합니다:
echo "$REQUIRE_PURPOSE" | while IFS= read -r line ; do
echo "$line"
done
그러나 파이프는 또 다른 껍질을 만듭니다.
그런 다음 다음을 시도합니다.
OLDIFS="$IFS"
IFS='
'
for line in "$REQUIRE_PURPOSE"; do
echo "$line"
done
IFS="$OLDIFS"
하지만 내용만 인쇄됩니다."$REQUIRE_PURPOSE"
나는 또한 다음을 시도했습니다.
while IFS= read -r line ; do
echo "$line"
done <<< "$REQUIRE_PURPOSE"
하지만 여기서도 작동하지 않습니다.
예:
echo "$REQUIRE_PURPOSE"
echo "---"
while IFS= read -r line ; do echo "$line"; done <<< "$REQUIRE_PURPOSE"
생성하다:
uuu
iii
Digital Signature
---
uuuniiinDigital Signature
또는
00000000 75 75 75 0a 69 69 69 0a 44 69 67 69 74 61 6c 20 |uuu.iii.Digital |
00000010 53 69 67 6e 61 74 75 72 65 0a 2d 2d 2d 0a 31 20 |Signature.---.1 |
00000020 75 75 75 6e 69 69 69 6e 44 69 67 69 74 61 6c 20 |uuuniiinDigital |
00000030 53 69 67 6e 61 74 75 72 65 0a 75 75 75 0a 69 69 |Signature.uuu.ii|
00000040 69 0a 44 69 67 69 74 61 6c 20 53 69 67 6e 61 74 |i.Digital Signat|
00000050 75 72 65 0a |ure.|
00000054
어떤 아이디어가 있나요?
답변1
필요한 옵션 read
은 입력을 배열로 -a
구문 분석합니다 .IFS
read -a lines <<<"$REQUIRE_PURPOSE"
for i in "${lines[@]}"
do
echo "$i"
done