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
와 달리 bash
' s 는 사용자가 해당 항목 read -e
의 내용에 개행 문자(모든 문자, 심지어 NUL까지)를 포함할 수 있도록 허용하기 때문에 역순으로 사용하면 한 줄에서 한 줄로 작업하는 것처럼 작동하지 않습니다. 시간).var
ed
rev
rev
에서는 bash
다음을 기억하세요.
- 매개변수 확장은 인용되어야 합니다. 귀하의 라인에서
echo
인용할 필요가 없는 부분을 인용했고 필요한 부분에서만 인용을 생략했습니다. - 한 줄을 읽으려면
IFS= read -r line
.read line
완전히 다른 일을 합니다. echo
임의의 데이터를 출력하는 데 사용할 수 없습니다.printf
대신 사용.