"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次のことを覚えておいてください。

おすすめ記事