Quero criar um script Bash que produza o seguinte:
Chile: 03:46am, Friday, 27 September, 2024
Tierra Del Fuego: 03:46am, Friday, 27 September, 2024
Falkland Islands: 03:46am, Friday, 27 September, 2024
South Georgia and the South Sandwich Islands: 04:46am, Friday, 27 September, 2024
UTC: 06:46am, Friday, 27 September, 2024
South Africa: 08:46am, Friday, 27 September, 2024
Port Alfred, Iles Crozet: 10:46am, Friday, 27 September, 2024
Western Australia: 14:46pm, Friday, 27 September, 2024
South Australia: 16:16pm, Friday, 27 September, 2024
VIC, NSW, ACT, and QLD, Australia: 16:46pm, Friday, 27 September, 2024
New Zealand: 18:46pm, Friday, 27 September, 2024
Consegui fazer isso até agora usando o seguinte código:
#Chile
location="America/Santiago"
label="Chile"
time=$(TZ=$location date "+%H:%M%p")
date=$(TZ=$location date "+%A, %d %B, %Y")
echo "$label: $time, $date"
...e então ter vários blocos do mesmo código, com localização e rótulo alterados conforme necessário.
Isso é ok, mas é um arquivo de 103 linhas. Quero aprender como usar matrizes associativas para realizar a mesma tarefa sem nenhuma outra razão além de simplesmente aprender.
Eu criei o array em si da seguinte maneira:
# Declare an associative array
declare -A locationsArray
# Add elements to the associative array
locationsArray[America/Santiago]="Chile"
locationsArray[America/Argentina/Ushuaia]="Tierra Del Fuego"
locationsArray[Atlantic/Stanley]="Falkland Islands"
locationsArray[Atlantic/South_Georgia]="South Georgia and the South Sandwich Islands"
locationsArray[Etc/UTC]="UTC"
locationsArray[Africa/Johannesburg]="South Africa"
locationsArray[Asia/Dubai]="Port Alfred, Iles Crozet"
locationsArray[Australia/Perth]="Western Australia, Australia"
locationsArray[Australia/Adelaide]="South Australia, Australia"
locationsArray[Australia/Melbourne]="VIC, NSW, ACT, and QLD, Australia"
locationsArray[Pacific/Auckland]="New Zealand"
Agora só preciso pegar uma chave do array e seu valor associado (por exemplo, "América/Santiago" e "Chile") e iterar por todo o array usando o código acima como modelo.
Como posso fazer isso?
Obrigado.