nma*_*hok 2 macos bash terminal automator
我创建了一个名为bash的脚本test.sh,它接受一个命令行参数: -
$ cat test.sh
#!/bin/bash
open -a Terminal $1
Run Code Online (Sandbox Code Playgroud)
当我以下列方式执行此脚本时: -
$ ./test.sh /Users/myusername/Desktop/folderwithoutspaces/
Run Code Online (Sandbox Code Playgroud)
它完美执行并在给定文件夹中启动一个新的终端窗口.
但是当我以下列方式执行此脚本时: -
$ ./test.sh /Users/myusername/Desktop/folder\ withspaces/
Run Code Online (Sandbox Code Playgroud)
它无法打开新的终端窗口并显示以下错误消息: -
The files /Users/myusername/Desktop/folder and /Users/myusername/Desktop/withspaces do not exist.
Run Code Online (Sandbox Code Playgroud)
我尝试了所有这些可能的方法,但在任何方面都没有成功: -
$ ./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/
Run Code Online (Sandbox Code Playgroud)
当您使用带引号的变量时,它会根据IFS(默认情况下包括空格)进行拆分.解决方案是引用变量.而不是说:
open -a Terminal $1
Run Code Online (Sandbox Code Playgroud)
说:
open -a Terminal "$1"
Run Code Online (Sandbox Code Playgroud)