我想要一个脚本,如果没有参数传递给它,它将在一些默认路径上运行另一个实用程序;理想情况下,我希望这对于包含空格的路径是安全的。
到目前为止我有script.sh
:
#!/bin/sh
base=$(dirname "$0")
exec touch "${@:-"$base/aaa" "$base/bbb"}"
Run Code Online (Sandbox Code Playgroud)
如果我把它放到一个名为“foo bar”的文件夹中并运行它:
Run Code Online (Sandbox Code Playgroud)foo\ bar/script.sh
我希望它最终应该这样做:
touch foo\ bar/aaa foo\ bar/bbb
Run Code Online (Sandbox Code Playgroud)
即在脚本所在目录“foo bar”下创建文件“aaa”和“bbb”。
相反,我得到了错误
触摸:无法触摸“foo bar/aaa foo bar/bbb”:没有那个文件或目录
(如果我将参数传递给脚本,它似乎工作正常。大概删除最后一个命令中的外部引号会反转我的情况。)