【发布时间】:2010-09-08 07:35:47
【问题描述】:
使用以下简化代码提取:
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 是用户传入的。在分配给mount_command 时,我尝试了几种引用DIR 的组合,以及使用数组的原始尝试。
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
更新0
请测试您的建议,我认为解决方案并不简单。
【问题讨论】:
-
请看BashFAQ/050。