Cygwin 向使用cygstart打开的命令传递文件路径时的转义空格 问题
运行以下命令时:Cygwin 向使用cygstart打开的命令传递文件路径时的转义空格 问题,cygwin,Cygwin,运行以下命令时: cygstart bash "/home/FirstName LastName/bin/script.sh" 传递到bash的文件路径在空格处被切断,因此我得到以下错误: /usr/bin/bash: /home/FirstName: No such file or directory 我所尝试的: 一, 二, 三, 四, 五, 还有半打我现在记不起来的其他变体,包括上面所有的,用反斜杠来逃避空间。错误总是一样的 我遗漏了什么,或者有没有办法解决这个问题? 更新:我在本例中
cygstart bash "/home/FirstName LastName/bin/script.sh"
传递到bash
的文件路径在空格处被切断,因此我得到以下错误:
/usr/bin/bash: /home/FirstName: No such file or directory
我所尝试的:
一,
二,
三,
四,
五,
还有半打我现在记不起来的其他变体,包括上面所有的,用反斜杠来逃避空间。错误总是一样的
我遗漏了什么,或者有没有办法解决这个问题?
更新:我在本例中使用
cygstart
的原因是利用它的--action=runas
选项。我调用的脚本重命名一个文件,但它必须以管理员权限运行。我的想法是,我可以调用脚本,然后输入相应的凭据。对于测试,我在~/test Dir/test.sh
中创建了一个脚本。以下是对我有效的方法:
cygstart bash \"/home/cxw/Test\ Dir/test.sh\"
开头和结尾的\“
是独立的双引号,将它们之间的内容包装起来,作为一个参数保存在一起
问题是这些参数被放入了Windows中,最终在空白处拆分参数。要查看正在运行的确切命令,请使用cygstart-v
上述操作的结果是一个如下的ShellExecute
调用:
ShellExecute(NULL, "(null)", "bash", ""/home/cxw/Test Dir/test.sh"", "(null)", 1)
注意成对的双引号:外部引号由cygstart-v
打印,内部引号是\“
以保持脚本名称在一起
我列出了
/home/cxw
而不是~
,因为~
不适合我。如果需要,您可以使用cygpath-a
获取绝对路径。Holy Crabst!我知道这与逃避某些事情有关,但是,以我的生命来说,我不知道是什么。非常感谢!特别是关于发生了什么的附加信息。
FILE_PATH="/home/FirstName LastName/bin/script.sh"
cygstart bash "${FILE_PATH}"
FILE_PATH="/home/FirstName LastName/bin/script.sh"
cygstart bash ${FILE_PATH}
FILE_PATH="/home/FirstName LastName/bin/script.sh"
MY_COMM=$(cygstart bash "$FILE_PATH")
eval $MY_COMM
cygstart bash \"/home/cxw/Test\ Dir/test.sh\"
ShellExecute(NULL, "(null)", "bash", ""/home/cxw/Test Dir/test.sh"", "(null)", 1)