Использование следующего упрощенного извлечения кода:
DIR='a b'
mount_command="./mount.cpfs $loop $DIR -f $OPTS"
sudo $mount_command
Выполняет эту строку при включенной трассировке:
+ sudo ./mount.cpfs /dev/loop0 a b -f -o default_permissions,allow_other,attr_timeout=0
Но DIR
не заключено в кавычки, поэтому a
иb
передаются как разные параметры, а не как один и тот же ./mount.cpfs
.
Каков наилучший способ создать последовательность команд, подобную этой, и затем развернуть ее в более позднюю командную строку?
Пожалуйста, имейте в виду, что пример кода упрощен до основной проблемы, я использую mount_command
в нескольких местах с различными добавлениями до и после него, и DIR
передаетсяПользователь.Я пробовал несколько комбинаций цитирования DIR
при присвоении mount_command
и примитивную попытку использования массива.
Пример использования mount_command
mount_command="./mount.cpfs $loop $DIR -f $OPTS"
case "$MODE" in
gdb)
sudo gdb -return-child-result -x gdbbatch \
--args $mount_command
;;
normal)
sudo $mount_command
;;
valgrind)
sudo valgrind --track-fds=yes --leak-check=full --malloc-fill=0x80 \
--free-fill=0xff $mount_command
;;
*)
echo "Mode '$MODE' unknown"
mounted=''
exit 2
;;
esac
Update0
Пожалуйста, проверьте ваши предложения, я не думаю, что решение является простым.