bash 2 if条件でスクリプトを作成し、forループで印刷する

bash 2 if条件でスクリプトを作成し、forループで印刷する

私はbashでスクリプトを書く方法を学び、いくつかの練習問題を解決しようとしています。運動はこんな感じです。

「basenew」という変数に「valuebase」という変数の内容が含まれている場合。 "basenew"には113,469文字以上を含める必要があります。両方の条件が満たされると、スクリプトは "basenew"変数の最後の20文字を印刷する必要があります。

私のコードは

#!/bin/bash

basenew="8dm7KsjU28B7v621Jls"
valuebase="ERmFRMVZ0U2paTlJYTkxDZz09Cg"

for i in {1..40}
do
    basenew=$(echo $basenew | base64)
        
    if [[ $basenew =~ $valuebase && ${#basenew} -ge 113469 ]] ; then
        echo $i
        echo $basenew | wc -c
        StrLen=`echo ${basenew} | wc -c`
        From=`expr $StrLen - 20`
        echo $basenew | cut -c ${From}-${StrLen}
    else
        echo "error"

    fi
done

しかし、繰り返し28で印刷され、最後の20回の繰り返しなので詰まっていますが、正解ではありません。

tail -c 20を使用して最後の20文字を印刷する提案はありますか?

ありがとう

ベストアンサー1

おすすめ記事