"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와 달리 bash' s 는 사용자가 해당 항목 read -e의 내용에 개행 문자(모든 문자, 심지어 NUL까지)를 포함할 수 있도록 허용하기 때문에 역순으로 사용하면 한 줄에서 한 줄로 작업하는 것처럼 작동하지 않습니다. 시간).varedrevrev

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

관련 정보