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
代わりに使用。