read -p "Input a sentence: " mystring
string=("$mystring" | rev)
echo "The sentence reversed character by character is: " $string
$string을 반대로 하고 싶지만 $string 이전의 모든 내용이 반전됩니다. 누구든지 나를 도와줄 수 있나요?
답변1
rev
herestring 또는 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를 사용하여 반전하는 것은 다음 줄에 있는 것처럼 작동하지 않습니다. 시간).bash
read -e
var
ed
rev
rev
에서는 bash
다음을 기억하세요.
- 매개변수 확장은 인용되어야 합니다. 귀하의 줄에서
echo
인용할 필요가 없는 부분을 인용하고, 필요한 유일한 부분인 경우 인용을 생략했습니다. - 한 줄을 읽으려면
IFS= read -r line
.read line
완전히 다른 일을 해보세요. echo
임의의 데이터를 출력하는 데 사용할 수 없습니다.printf
대신 사용.