我创建了一个名为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/
答案 0 :(得分:5)
当您使用带引号的变量时,它会根据IFS
(默认情况下包含空格)进行拆分。解决方案是引用变量。而不是说:
open -a Terminal $1
说:
open -a Terminal "$1"