Bashスクリプトリバースライン

Bashスクリプトリバースライン

だから私は入力行を反転するためにこのスクリプトを見つけました。

#! /bin/bash  
input="${1}"  
reverse=""  
len=${#input}  
for(( i=${len}-1; i>=0; i-- ))  
do  
reverse="$reverse${input:${i}:1}"  
done  
echo "$reverse"  

#inputとforループの機能を説明できる人はいますか?

ベストアンサー1

単純化すると、スクリプトは次のようになります。

#! bin/bash

input="${1}"    reverse=""

for   (( i=0; i<${#input}; i++ ))
do    reverse="${input:${i}:1}$reverse"
done
echo   "$reverse"

上記のコードを:というファイルに入れてscript.sh実行を許可するとしますchmod u+x script.sh。これにより、次のコマンドが機能します。

$ ./script.sh 0123456789
9876543210

${#input}の値は入力された文字の長さです。
ループは最初から最後まで文字単位で進行します。
各文字を選択するために、スクリプトは「サブストリング拡張」と呼ばれるbashツールを使用します。
引用符man bash(を入力してアクセスすることもできますman bash):

${パラメータ:オフセット:長さ}部分
文字列拡張。 offset で指定された文字から引数の最大文字長まで拡張されます。

これはi、その位置の各文字を順番に選択して変数の文字列を再生成することを意味しますreverse

しかし、これを行うためにループやカラフルなコーディングは必要ありません。この単純な行は同じことをします:

$ echo "0123456789" | rev
9876543210

おすすめ記事