Control: tags 961222 patch Christoph Biedl wrote...
> Reverting to "#!/bin/bash" yields
> the expected behaviour, too.
So this is something, one I didn't know about:
In bash and dash,
var=$(something)
works as expected even if that ``something`` contains spaces, like in
var=$(date '+%F %T')
Things are however different in dash if you're within a function and
want to limit the scope, i.e.
local var=$(date '+%F %T')
Quite frankly, I haven't checked which shell implementation does not
follow the specification, if any, or if this is just another bashism.
Quoting fixes this, see below
Christoph
--- /usr/bin/ucf.broken
+++ /usr/bin/ucf.fixed
@@ -82,8 +82,8 @@
local new_file="$4"
# Note: get_file_metadata not in quotes to ignore "\n" characters
- local old_file_label=$(get_file_metadata "$old_file")
- local new_file_label=$(get_file_metadata "$new_file")
+ local old_file_label="$(get_file_metadata "$old_file")"
+ local new_file_label="$(get_file_metadata "$new_file")"
[ -e "$old_file" ] || old_file=/dev/null
[ -e "$new_file" ] || new_file=/dev/null
signature.asc
Description: PGP signature

