Закодируйте переменную несколько раз в цикле for в bash

#bash

Вопрос:

Я хочу кодировать var 40 раз для base64 и мне нужно значение 35-го сгенерированного значения. Но, похоже, я получаю один и тот же результат для всех 40 кодировок (37). Кто — нибудь может вывести меня на правильный путь? До сих пор я перепробовал все..

 #!/bin/bash

# Variable to encode
var="nef892na9s1p9asn2aJs71nIsm"
counter=0

for counter in {1..40}
do
   encode=$(echo $var | base64)
   ((counter  ))

if [[ "$counter" == 35 ]]; then
    echo $encode | wc -c
fi
done
 

Комментарии:

1. Удалять ((counter )) . 40 times to base64 and need the value of the 35th Тогда почему 40? Просто сделай это 35 несколько раз. all 40 encodings (37) итак, 40, 37 или 35? I get the same result Как вы проверяете результат, если он тот же самый? Пожалуйста, опубликуйте это.

2. @raidn1337 : Вы всегда кодируете одну и ту же переменную ( var ). Как вы думаете, почему вы получили бы другие результаты? На самом деле, мне было бы жутко, если бы вы получали разные результаты при каждой попытке.

Ответ №1:

Вы используете var каждый цикл.

 encode=$(echo $var | base64)
 

var всегда одно и то же, вы никогда его не меняете. Используйте encode , например.

 encode=$var
for ....
      encode=$(echo "$encode" | base64)
 

Проверьте свои сценарии с помощью shellcheck.net .