bash: отображение нулевого значения для переменной после выполнения цикла for с приведенным ниже кодом - PullRequest
0 голосов
/ 21 марта 2019

создание переменной из цикла "for" и затем присвоение строки Значение it.New отображается как ноль.
ожидаемый результат: colname1 = хэш (идентификатор) как идентификатор
colname2 = хэш (cust) как cust

Фактический объем производства:
colname1 = ''
colname2 = ''

#!/bin/bash
hcd1="hash("           # string to be added
hcd2=")as "            #string to be added 
dmk=id,cust
IFS=" ,"
i=0
for val in ${dmk}
do
  i=$((++i))
  eval var${i}="${val}"
done
for ((j=1;j<=i;++j))
do
  name="var${j}"
  colname="col${j}"
  echo ${colname} = "$hcd1${!name}$hcd2 ${!name}"
done
echo "$colname1    $colname2 "

1 Ответ

0 голосов
/ 21 марта 2019

некоторые заметки:

  • $ {dmk} не расширяет запятые. ваш цикл будет: из одного элемента: 'id, cust'
  • вам не нужны фигурные скобки для интерполяции переменных $ {dmk} - это то же самое, что $ dmk
  • $ {! Name} кажется недействительным. возможно, вы имели в виду $ name

с некоторыми исправлениями

#!/bin/bash
hcd1="hash("           # string to be added
hcd2=")as "            #string to be added 
dmk="id cust"
#IFS=" ,"
i=0
for val in $dmk
do
  i=$((++i))
  eval var$i="$val"
  #echo  var$i="$val"
done
for ((j=1;j<=i;++j))
do
  eval name='$'"var$j"
  colname="col$j"
  echo $colname = "$hcd1$name$hcd2 $name"
done

выходы

col1 = hash(id)as  id
col2 = hash(cust)as  cust
...