В bash можно экранировать аргументы, содержащие пробелы.
foo "a string"
Это также работает для аргументов команды или функции:
bar() {
foo "$@"
}
bar "a string"
Пока все хорошо, но что, если я хочу манипулировать аргументами перед вызовом foo
?
Это не работает:
bar() {
for arg in "$@"
do
args="$args \"prefix $arg\""
done
# Everything looks good ...
echo $args
# ... but it isn't.
foo $args
# foo "$args" would just be silly
}
bar a b c
Итак, как вы строите списки аргументов, когда аргументы содержат пробелы?