특정 값을 반복하고 싶은데 간단히 for 루프를 사용할 수 있다는 것은 알지만 마지막에 명령에서 변수 값을 바꿀 수 있는 다른 방법이 있나요?
약간
echo 11"$p" < 8 #toprint 118
echo 11"$p" < 9 #toprint 119
echo 11"$p" < a #toprint 11a
명령이 끝날 때 특정 변수를 내 값으로 바꿀 수 있기를 원합니다. 이 작업을 수행하는 방법에는 여러 가지가 있다는 것을 알고 있으므로 다른 방법을 요구하지 않습니다.
답변1
( read p && echo "11$p" ) <<<8
또는
{ read p && echo "11$p"; } <<<8
변수가 명령 이후의 값을 유지하는 경우.
이것은<<<
이 문자열은 리디렉션됩니다.. 단일 문자열을 명령이나 유틸리티로 리디렉션합니다. 여기서는 서브쉘이나 복합 명령에 숫자를 보내는 데 사용합니다. 이 복합 명령은 값을 읽은 다음 이를 문자열의 일부로 인쇄합니다.
<8
다음에서 시작하려고 시도하므로 사용할 수 없습니다.문서부르다 8
.
답변2
값이 배열에 있으면 반복할 필요 없이 다음을 수행하면 됩니다.
values=(8 9 a)
printf '11%s\n' "${values[@]}"
다른 변수에 있는 경우에도 동일합니다.
a=8 b=9 c=a
printf '11%s\n' "$a" "$b" "$c"
입력이 표준 입력에서 오는 경우 다음을 사용할 수 있습니다 xargs
.
xargs printf '11%s\n' << EOF
8 "9"
'a'
EOF
(지원되는 참조 또는 매개변수 구분 기호의 다양한 유형이 위에 나와 있습니다 xargs
.)
또는 다음과 같은 것을 사용하십시오:
sed 's/^/11/' << EOF
8
9
a
EOF
또는
awk '{print "11" $0}' << EOF
8
9
a
EOF
일반적으로 말하면,쉘 스크립트에서는 명시적으로 작성하고 싶지 않습니다.주기. 이것주기이는 한 번에 한 줄씩 처리하거나 한 번에 하나의 인수를 처리하는 텍스트 유틸리티에 의해 수행됩니다.