【发布时间】:2018-05-01 10:30:44
【问题描述】:
我有一个 Windows 应用程序,我在我的 Mac 上使用 WineHQ 来运行这个应用程序。该应用程序是物理的特定数值求解器。每次要解决物理问题时,都要给出一定的初始条件。
我们的想法是开发一个 bash 脚本,它可以安装或运行这个数值求解器以用于初始条件。
安装: 开发此应用程序时,开发人员忘记将某些文件嵌入到应用程序中。因此,该应用程序需要某些自定义文件,一旦安装应用程序,这些文件将被复制粘贴。 [它不是裂缝]。
运行: 现在安装了应用程序,每次我运行求解器时,我都必须指定一个初始条件。初始条件位于 INIT_FOLDER 中。我打算把这个文件夹复制到/APP,然后运行APP.exe。
我正在为此编写一个 bash 脚本。
#! /bin/bash
if [ $1 = "INSTALL" ]; then
wine [APP MAC PATH] APP.exe
cp [CUSTOM FILES PATH]/ ~/.wine.../APP
cd ~/.wine.../APP
else
if [ $1="RUN" ]; then
cp $2 ~/.wine.../APP
cd ~/.wine.../APP
wine APP.exe
fi
fi
最终目标是运行以下命令,
>>./scriptname INSTALL
>>./scriptname RUN INIT_FOLDER_PATH
安装: 当然,当我运行命令安装应用程序时,我不会遇到任何问题。但是,我想改进以下脚本(以教育自己)。假设应用程序没有安装 I.E.
wine [APP MAC PATH] APP.exe
“失败”。如何防止后续操作被执行?
另外,我不想输入 wine 文件夹的位置。他们是否有某种方法可以让这更容易,比如将“wine app path”表示为等价词(比如 FOO)
运行: 我想对此进行一些验证。如果我输入,
>>./scriptname RUN INIT_FOLDER_PATH/
我是不是假设 $2 是 INIT_FOLDER_PATH。也是下面命令的写法,
cp $2 ~/.wine.../APPFOLDERNAME
【问题讨论】:
-
这可能应该分成多个不同的问题。例如,如果
wine foo.exe || exit或if ! wine foo.exe; then exit; fi在foo.exe失败时没有退出,那么这就是一个单独的、独立讨论的主题(这并不是关于“优雅”的真正问题)。 -
另外,这里有 shellcheck.net 会自动捕获的错误。
-
你可以像这样设置默认参数...stackoverflow.com/a/33419280/2836621
-
您可以考虑安装 Oracle Virtualbox(免费)并使用您的求解器在其中运行适当的 Windows 副本。您可以与 Windows 共享 Mac 上的一个或多个目录和/或在 macOS 和 Windows 之间拖放、复制和粘贴。最重要的是,整个 Windows 的东西都在 Mac 上的一个文件中,因此您可以通过删除来摆脱整个垃圾堆(包括所有的服务包、错误、病毒、无用的回形针助手和无用的 BATCH 脚本语言)一个文件!
标签: bash