为什么我的 Cygwin 副本或目录名称中带有变量的 mkdir 不起作用?

Why does my Cygwin copy or mkdir with a variable in directory name not work?

构建 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 并复制 "into",但这也只是在第一次迭代中创建了 SomeProject,而随后的迭代抱怨 SomeProject已经存在。

知道发生了什么吗on/wrong?

我想我自己解决了。我需要在变量中的 i 周围使用 {}。 在我的代码中 $i_Data 被视为变量名,它解析为 nothing/empty 字符串。通过在 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