"rev" 명령: $string을 되돌리고 싶지만 $string 이전의 모든 내용도 되돌립니다.

"rev" 명령: $string을 되돌리고 싶지만 $string 이전의 모든 내용도 되돌립니다.
read -p "Input a sentence: " mystring
string=("$mystring" | rev)
echo "The sentence reversed character by character is: " $string

$string을 반대로 하고 싶지만 $string 이전의 모든 내용이 반전됩니다. 누구든지 나를 도와줄 수 있나요?

답변1

revherestring 또는 heredoc을 사용하여 문자열을 표준 입력으로 제공 하거나 출력을 파이프한 다음 다음을 사용하여 printf출력을 수집해야 합니다.rev명령 대체.

IFS= read -rep 'Input a sentence: ' mystring

string=$(
  rev <<< "$mystring"
)
# or:
string=$(
  printf '%s\n' "$mystring" | rev
)

printf '%s\n' "The sentence reversed character by character is: $string"

이는 rev일반적인 명령이기는 하지만 표준 명령은 아닙니다. zsh대신 다음을 사용하면 bash내부적으로 반전을 수행할 수 있으며 사용자가 무엇이든 입력할 수 있습니다 .

mystring=
vared -p 'Input a sentence: ' mystring
string=${(j[])${(s[]Oa)mystring}}
print -r The sentence reversed character by character is: $string

zsh( s 는 vared'와는 달리 사용자가 반복되는 항목에 개행 문자(모든 문자, 심지어 NUL까지)를 포함할 수 있도록 허용하므로 's를 사용하여 반전하는 것은 다음 줄에 있는 것처럼 작동하지 않습니다. 시간).bashread -evaredrevrev

에서는 bash다음을 기억하세요.

관련 정보