한 줄로 bash의 파일 및 변수로 출력하는 데 문제가 있습니다.

한 줄로 bash의 파일 및 변수로 출력하는 데 문제가 있습니다.

$RANDOM다음 출력을 생성하고 이를 모두 파일과 변수에 쓰는 데 사용하고 싶습니다 .

123
24234
758
4893

내 시도는 다음과 같습니다. 그러나 그 중 어느 것도 성공하지 못했습니다. 나는 노력했다리디렉션printfto read및 then 의 표준 출력리디렉션file

$ read var < printf "%s\n" $RANDOM $RANDOM $RANDOM $RANDOM > file

나도 시도했다관로printfread그때 까지 의 표준 출력리디렉션에게 file:

$ printf "%s\n" $RANDOM $RANDOM $RANDOM $RANDOM | read var > file

내 문제가 무엇인지 이해하도록 도와줄 수 있는 사람이 있나요?

답변1

read입력을 받아 변수에 할당하는 데 사용됩니다. 출력이 생성되지 않으므로 리디렉션은 빈 파일만 생성합니다.

당신은 그것을 사용할 수 있습니다tee주문하다대신에. 이는 stdin에서 입력을 받아 stdout 및 하나 이상의 파일에 출력을 씁니다.

변수 할당을 사용하면 tee다음과 같은 작업을 수행할 수 있습니다.

$ variable=$(printf "%s " $RANDOM $RANDOM $RANDOM $RANDOM | tee variable.txt)

출력이 한 줄에 있도록 요청했기 때문에 "%s"를 사용했습니다.

그런 다음 다음을 제공합니다.

$ echo $variable
31738 28009 6462 15565

$ cat variable.txt
31738 28009 6462 15565

답변2

그냥 해:

var="$RANDOM
$RANDOM
$RANDOM
$RANDOM
$RANDOM"

printf '%s\n' "$var" > file

또는 스칼라 변수에 줄바꿈으로 구분된 목록을 저장하는 대신 숫자를 배열의 요소로 사용하려는 경우:

var=("$RANDOM" "$RANDOM" "$RANDOM" "$RANDOM" "$RANDOM")
printf '%s\n' "${var[@]}" > file

관련 정보