【问题标题】:Why does my Cygwin copy or mkdir with a variable in directory name not work?为什么我的 Cygwin 副本或带有目录名称变量的 mkdir 不起作用?
【发布时间】:2017-01-11 12:42:35
【问题描述】:

构建 Unity 独立构建后,我想创建可执行文件及其数据文件夹的一些副本,以便运行它的多个实例。为了轻松做到这一点,我制作了这个脚本:

for i in 1 2 3 4
    do cp SomeProject.exe SomeProject$i.exe
    cp -r SomeProject_Data/ SomeProject$i_Data
    echo i=$i done
done

但是,虽然复制可执行文件有效,但此文件夹复制无效。而不是将数据文件夹复制到 SomeProject1_DataSomeProject2_Data 等。它将第一个复制到 SomeProject 和其中的下一个(下面似乎只是覆盖了第二个)。

我尝试插入 mkdir SomeProject$i_Data 并将其“复制”到其中,但这也只是在第一次迭代中创建了 SomeProject,随后的迭代抱怨 SomeProject 已经存在。

知道发生了什么/错了吗?

【问题讨论】:

    标签: bash variables syntax cygwin cp


    【解决方案1】:

    我想我只是自己解决了这个问题。我需要在变量中的 i 周围使用 {}。 在我的代码中,$i_Data 被视为变量名,它解析为空字符串。通过在 i 周围添加 {},它可以正确解析。所以,工作代码是:

    for i in 1 2 3 4
        do cp SomeProject.exe SomeProject$i.exe
        cp -r SomeProject_Data/ SomeProject${i}_Data
        echo i=$i done
    done
    

    【讨论】:

    • 或双引号,如我的回答。
    • 不,双引号不起作用。问题是它将“i_Data”视为变量名,而不仅仅是“i”,所以我需要 {}。会写一个正确的答案:)
    • 几乎在考虑是否应该删除整个问题...您认为它对其他人有用吗? :)
    • 可能不会。系统不鼓励我这样做(我猜这是一个有效的问题/答案)
    猜你喜欢
    • 1970-01-01
    • 2012-09-27
    • 1970-01-01
    • 1970-01-01
    • 2015-05-02
    • 1970-01-01
    • 1970-01-01
    • 2015-11-28
    • 1970-01-01
    相关资源
    最近更新 更多