Получить содержимое передаваемой строки из сценария

Отвечая на последнюю часть вашего вопроса: ваш подход (использование одних и тех же случайных данных три раза) лучше, чем использование нулей.

Не совсем, это почти то же самое. Каждый блок на вашем устройстве, состоящий из трех одинаковых случайных частей, является частью тройки одинаковых блоков. Таким образом, злоумышленник может отобразить блоки вашего устройства, которые изменились, и это та же информация, которую злоумышленник получает с обнуленного устройства. Это ломается только тогда, когда ваше устройство настолько заполнено, что в каждой тройке есть три разных блока.

2
29.03.2018, 21:41
3 ответа

Если ваш /bin/sh на самом деле является /bin/bash, вы можете использовать косвенную переменную:

#!/bin/bash
STRS=" KW0 KW1 "
KW0_TEXT="text text text"
KW1_TEXT="text text  text text"
for str in ${STRS}; do
  var=${str}_TEXT
  printf "%s\n" "${!var}"
done
4
27.01.2020, 21:52

Если ваш /bin/sh на самом деле является /bin/bash и ваша версия достаточно свежая, вы можете использовать ассоциативный массив

#!/bin/bash
strs=( KW0 KW1 )
declare -A text=( 
    [KW0]="text text text" 
    [KW1]="text text  text text" 
)
for str in "${strs[@]}"; do 
    printf "%s\t%s\n" "$str" "${text[$str]}"
done
KW0     text text text
KW1     text text  text text
3
27.01.2020, 21:52

Проблема в том, что вам не хватает литерала $в вашем использовании eval. После замены переменной оцениваемая команда будет

echo KW0_TEXT

но ты хочешь

echo $KW0_TEXT

Так и должно быть:

eval echo '$'${str}_TEXT

Однако метод косвенных переменных Джеффа Шаллера предпочтительнее, если вы используете оболочку, которая его поддерживает.

0
27.01.2020, 21:52

Теги

Похожие вопросы