Combine arrays associativos Bash

1

Estou tentando criar um script que combine matrizes sob demanda. Aqui está o script:

#! /bin/bash
declare -A code
code=( [H]="h" [E]="e" [L]="l" [P]="p" [M]="m" [E]="e" )

Eu preciso imprimir "help me" - sem aspas e em uma linha - quando eu digitar ./filename.bash "HELP ME" no prompt de comando. aqui está o que estou usando.

code=$1;
for (( i = 0; i < ${#code[@]} ; i  = $i + 1 ));
do;
echo ${code[@]:$i:1};
done
    
por Jack Spencer 11.05.2015 / 01:20

1 resposta

1

Tente isso com script.sh "HELP ME" :

#!/bin/bash

input=$1;
declare -A code
code=( [H]="h" [E]="e" [L]="l" [P]="p" [M]="m" [E]="e" )

for ((i=0; i<${#input}; i++))
do
  if [[ "${input:$i:1}" = " " ]]; then     # whitespace?
    echo -n " "
  else
    echo -n "${code[${input:$i:1}]}"
  fi
done

Saída:

help me
    
por 11.05.2015 / 06:52