制作一个优雅的bash脚本

时间:2017-11-17 15:33:29

标签: bash

我有一个Windows应用程序,我在我的Mac上使用WineHQ来运行这个应用程序。该应用程序是物理学的特定数值解算器。每当要解决物理问题时,都要给出某些初始条件。

这个想法是开发一个bash脚本,可以为初始条件安装或运行这个数值解算器。

INSTALL: 当这个应用程序开发时,开发人员忘记将某些文件嵌入到应用程序中。因此,应用程序需要某些CUSTOM FILES,一旦安装了应用程序,它们就会被复制粘贴。 [它不是裂缝]。

RUN: 现在应用程序已安装,每次运行解算​​器时,我都必须指定初始条件。初始条件位于 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

INSTALL: 当然,当我运行命令来安装应用程序时,我不会遇到任何问题。但是,我想改进以下脚本(教育自己)。假设应用程序未安装I.E。

wine [APP MAC PATH] APP.exe 

“失败”。如何防止后续操作被执行?

另外,我不想输入wine文件夹的位置。是他们的一些方法,使这更容易,如将“葡萄酒应用程序路径”表示为一个等效的单词(比如FOO)

RUN: 我想对此进行一些验证。如果我打字,

>>./scriptname RUN INIT_FOLDER_PATH/

我写信假设$ 2是INIT_FOLDER_PATH。以下命令也是写方式,

cp $2 ~/.wine.../APPFOLDERNAME

1 个答案:

答案 0 :(得分:0)

  1. 要防止指定wine可执行文件的路径,请确保该路径位于计算机的PATH环境变量中。 See here关于如何在Mac上执行此操作。完成后,您只需指定程序名称即可运行它。

  2. 我不确定错误捕获。您将在wineHQ环境中运行Windows可执行文件,因此您有两层错误。 1)Windows可执行文件和2)Wine内的错误。您可以查看葡萄酒用户指南中关于environment variables的部分。特别是WineDebug频道选项。我不确定这是否能解决Windows可执行文件中的错误,但它似乎是一个好的开始。您还可以在运行wine行后检查返回代码,方法是选中返回return=$?,代码为0-255。 0是A-OK,其他任何事情都是“在最后一个命令上发生了一些不好的事情”。

  3. 我不完全确定你在问题的最后部分提出了什么问题。在您的情况下,$2将引用字符串“INIT_FOLDER_PATH /”,因此您的cp $2 ...行会将名为“INIT_FOLDER_PATH /”的文件夹中的任何内容复制到您的~/.wine...路径中。