Macos 通行证$@&引用;写
因此,我将以下脚本保存为Macos 通行证$@&引用;写,macos,applescript,sh,Macos,Applescript,Sh,因此,我将以下脚本保存为usr/local/bin/spawn,它在新的终端窗口中打开一个进程,然后关闭该窗口: #!/bin/sh osascript <<END tell app "Terminal" to do script "$1; logout" END 在运行nano的情况下打开新的终端窗口,当我关闭nano时,窗口也会关闭 但是,要生成带有参数的命令,比如java-jarfoo.jar,我需要使用 $ spawn "java -jar foo.jar" 有没有办法更
usr/local/bin/spawn
,它在新的终端窗口中打开一个进程,然后关闭该窗口:
#!/bin/sh
osascript <<END
tell app "Terminal" to do script "$1; logout"
END
在运行nano
的情况下打开新的终端窗口,当我关闭nano
时,窗口也会关闭
但是,要生成带有参数的命令,比如java-jarfoo.jar,我需要使用
$ spawn "java -jar foo.jar"
有没有办法更改脚本,使其在没有引号的情况下也能正常工作?比如说,
$ spawn java -jar foo.jar
我试过使用从到的技巧来回答一个不涉及AppleScript的问题。然而,当我尝试使用spawn
时,这总是导致Terminal.app崩溃。是否有办法避开“$@”
或针对此问题的其他实现?它不一定要使用AppleScript。#/垃圾箱/垃圾箱
#!/bin/sh
osascript <<END
tell app "Terminal" to do script "$@; logout"
END
osascript>“$file”
chmod+x“$file”
打开-终端“$file”
或者,如果您想在当前终端程序(终端、iTerm 2等)中打开它,您可以使用以下脚本:
#!/bin/sh
file=$(mktemp $TMPDIR/spawnXXXXXX.command)
echo '#!/bin/sh' > "$file"
echo "$@" >> "$file"
chmod +x "$file"
open "$file"
#!/垃圾箱/垃圾箱
文件=$(mktemp$TMPDIR/spawnXXXXXX.command)
回音/bin/sh'>“$file”
回显“$@”>>“$文件”
chmod+x“$file”
打开“$file”
您的脚本也没有正确转义<代码>生成“echo”a“
将由于双引号而导致错误
您可以使用运行处理程序将参数传递给osascript:
#!/bin/bash
osascript - "$*" <<END
on run args
tell app "Terminal"
do script item 1 of args
do script "logout" in window 1
end
end
END
#/bin/bash
osascript-“$*”有效,但不能解决Lauri Ranta提出的逃逸问题。@Fenhl我不知道如何使用applescript来解决这个问题,但我想我解决了你的问题。这种方法在生成新的终端窗口时会立即杀死原来的终端窗口。@Fenhl你说kill是什么意思?注销命令应在打开的窗口中运行。如果确实要关闭新窗口,请将窗口1中的执行脚本“注销”替换为关闭窗口1
。我的意思是关闭,对不起。我对AppleScript了解不多,但它看起来像是window 1
指的是我调用spawn
脚本的窗口。
#!/bin/sh
file=$(mktemp $TMPDIR/spawnXXXXXX.command)
echo '#!/bin/sh' > "$file"
echo "$@" >> "$file"
chmod +x "$file"
open "$file"
#!/bin/bash
osascript - "$*" <<END
on run args
tell app "Terminal"
do script item 1 of args
do script "logout" in window 1
end
end
END