Para iterar os argumentos passados para uma função (isso também funciona para iterar os argumentos em scripts):
#!/bin/sh
foo () {
for i in "$@"; do
printf 'Argument is "%s"\n' "$i"
done
}
foo a b "c d" e "f g h"
Saída:
Argument is "a"
Argument is "b"
Argument is "c d"
Argument is "e"
Argument is "f g h"
Ou com seus valores:
s=myserver
adir=/another/dir/
foo=/some/path/to/file.sh
bar=username@${s}:${adir}
foo string1 string2 ${foo} ${bar} ${s}
que gera
Argument is "string1"
Argument is "string2"
Argument is "/some/path/to/file.sh"
Argument is "username@myserver:/another/dir/"
Argument is "myserver"
É provável que você tenha um erro de digitação no código que troque a $
e {
em ${bar}
:
$ foo {$bar}
Argument is "{username@myserver:/another/dir/}"