Utilizzo di due variabili in un ciclo FOR in bash

From RVM Wiki
Jump to navigation Jump to search

Se si vogliono usare dei dati contenuti in colonne di un file di input, operare come segue.

  • Creare lo script
vi mkfetcmailrc
#!/bin/bash
#
# Input file is named
# userlist
# and is in chpasswd format:
# paolo.cabella:paolo
# marco.vassallo:marco

# We want to obtain
# user "paolo.cabella@matras.it"
# pass "paolo"
# is paolo.cabella here

# user "marco.vassallo@matras.it"
# pass "marco"
# is marco.vassallo here

IFSORI=$IFS
# Read an entire line for the '$(cat userlist)' expansion
IFS=$'\n'
for LINE in $(cat userlist)
do
  # split LINE with : separator
  IFS=':'
  set -- $LINE    #  Parses variable "LINE"
                  #+ and sets positional parameters.
  #  The "--" prevents nasty surprises if $planet is null or
  #+ begins with a dash.

  #  May need to save original positional parameters,
  #+ since they get overwritten.
  #  One way of doing this is to use an array,
  #         original_params=("$@")

  # Now $1=paolo.cabella and $2=paolo
        echo  user "\"${1}@matras.it\""
        echo  pass "\"$2\""
        echo  is $1 here
        echo -e "\n"
done
IFS=$IFSORI
  • Renderlo eseguibile
chmod +x  mkfetcmailrc
  • Creare il file contenente i valori:
vi userlist
  • Generare l'output
./mkfetcmailrc

Riferimenti