You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Bash变量中保存带空格的可执行路径及附带参数

问题原因

你遇到的报错是因为把带空格的路径、后续子命令都存到同一个普通字符串变量导致的Bash错误分词:路径中的空格转义符\在双引号包裹的字符串中不会生效,Bash展开变量时会把路径从空格处切开,把/Applications/YubiKey\识别为要执行的文件,自然找不到对应路径。


最优解决方案

用Bash数组存储可执行路径和固定参数,可以完美处理路径自带空格、参数分隔的双重需求,修改后的test.sh写法如下:

#!/bin/bash
# 数组每个元素对应一个独立项:第一项是带空格的可执行文件路径,第二项是固定子命令openpgp
run=("/Applications/YubiKey Manager.app/Contents/MacOS/ykman" "openpgp")
# 执行时用"${run[@]}"展开,保证每个元素原样传递,不会被错误拆分
"${run[@]}" info

这种写法不管路径里有多少个空格、后续要加多少层子命令/参数,都能正常识别,不会出现分词错误。


简化写法

如果不需要复用ykman openpgp这个固定前缀,也可以单独定义可执行文件路径变量,执行时用引号包裹路径即可:

#!/bin/bash
YKMAN_PATH="/Applications/YubiKey Manager.app/Contents/MacOS/ykman"
"$YKMAN_PATH" openpgp info

内容的提问来源于stack exchange,提问作者sunknudsen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 21:42:03