在 Bash 中,使用变量时出现“没有这样的文件或目录”,而直接使用路径时则不会出现

问题描述 投票:0回答:1

上下文:我正在尝试通过命令行清理我的 Xcode 工作区和方案。我试过修剪引号和不修剪引号。

当前结果为:

-bash: ~/my/workspace/location: No such file or directory
。但是,如果我直接运行命令,
$ xcodebuild clean -workspace ~/my/workspace/location -scheme SchemeName
,它工作得很好。

这是我到目前为止所得到的:

cxc () {
    local path_to_workspace="~/my/workspace/location"
    local scheme="SchemeName"

    if [ ! -z "$1" ]; then
        path_to_workspace="$1"
    fi

    if [ ! -z "$2" ]; then
        scheme="$2"
    fi

    if [ -z "$1" ]; then
        echo "No arguments supplied. Using default."
    fi

    # Trim quotes from URL
    path_to_workspace=$("$path_to_workspace" | tr -d \")

    xcodebuild clean -workspace "$path_to_workspace" -scheme "$scheme"
}
bash xcodebuild
1个回答
1
投票

兴趣线:

path_to_workspace=$("$path_to_workspace" | tr -d \")

这会生成一个尝试执行

$path_to_workspace
的子 shell,即它会尝试执行
~/my/workspace/location
... 并且由于这不是有效命令 ... 错误消息。

你可能想要的是:

path_to_workspace=$(echo "$path_to_workspace" | tr -d \")
                    ^^^^

我假设

tr -d \"
正在寻找从
$patch_to_workspace
中存储的值中删除双引号但是,变量中没有存储双引号所以...... ??

在这一点上(对我来说),你需要做的就是删除这一行:

path_to_workspace=$("$path_to_workspace" | tr -d \")

这应该能让你克服当前的错误。我不熟悉

xcodebuild
所以我不能说你是否会收到一个新的错误...

© www.soinside.com 2019 - 2024. All rights reserved.