「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

您需要將字串作為標準輸入提供給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

(請注意,由於zshs與'vared不同,允許用戶在被迭代的內容中包含換行符(以及任何字符,甚至 NUL),因此使用 's來反轉它不會像在一行中那樣工作)時間)。bashread -evaredrevrev

在 中bash,記住:

相關內容