Mac OS X - 将带有空格的路径名作为参数传递给bash脚本,然后发出打开的终端命令

时间:2014-02-01 09:10:30

标签: macos bash terminal automator

问题在Mac OS X Mavericks上使用bash shell

我创建了一个名为test.sh的bash脚本,它接受一个命令行参数: -

$ cat test.sh
#!/bin/bash
open -a Terminal $1

当我以下列方式执行此脚本时: -

$ ./test.sh /Users/myusername/Desktop/folderwithoutspaces/

它完美执行并在给定文件夹中启动一个新的终端窗口。

但是当我以下列方式执行此脚本时: -

$ ./test.sh /Users/myusername/Desktop/folder\ withspaces/

无法打开新的终端窗口并显示以下错误消息: -

The files /Users/myusername/Desktop/folder and /Users/myusername/Desktop/withspaces do not exist.

我尝试了所有这些可能的方法,但在任何方面都没有成功: -

$ ./test.sh "/Users/myusername/Desktop/folder\ withspaces/"
$ ./test.sh "/Users/myusername/Desktop/folder withspaces/"
$ ./test.sh '/Users/myusername/Desktop/folder\ withspaces/'
$ ./test.sh '/Users/myusername/Desktop/folder withspaces/'
$ ./test.sh /Users/myusername/Desktop/folder\ withspaces/

1 个答案:

答案 0 :(得分:5)

当您使用带引号的变量时,它会根据IFS(默认情况下包含空格)进行拆分。解决方案是引用变量。而不是说:

open -a Terminal $1

说:

open -a Terminal "$1"