Macos Bash脚本作为OSX应用程序等待删除的文件

Macos Bash脚本作为OSX应用程序等待删除的文件,macos,shell,Macos,Shell,我写了一个bash脚本,我用Platypus把它变成了一个应用程序。我选择鸭嘴兽,所以我可以很容易地使用水滴选项 基本思想是从用户那里获取一个zip文件,解压该文件并排除几个我们不使用的文件,重新压缩新文件并将它们移动到桌面上的文件中。当我运行应用程序时,脚本不会等待用户删除文件。它运行并给出一个错误,没有找到.zip 我有几个问题 如何让我的应用程序等待zip文件被放置在水滴上 Platypus将文件存储在何处?如何在脚本中调用它 这就是我目前所拥有的 unzip *.zip -x *.cpg

我写了一个bash脚本,我用Platypus把它变成了一个应用程序。我选择鸭嘴兽,所以我可以很容易地使用水滴选项

基本思想是从用户那里获取一个zip文件,解压该文件并排除几个我们不使用的文件,重新压缩新文件并将它们移动到桌面上的文件中。当我运行应用程序时,脚本不会等待用户删除文件。它运行并给出一个错误,没有找到.zip

我有几个问题

如何让我的应用程序等待zip文件被放置在水滴上

Platypus将文件存储在何处?如何在脚本中调用它

这就是我目前所拥有的

unzip *.zip -x *.cpg *.xml *.txt -d Processed
cd NavtecProcessed
zip -r * *
echo "Cleaning up your mess"
mkdir ~/Desktop/Final/
mv ./*zip ~/Desktop/Final/
sleep 2
cd ..
rm -r NavtecProcessed*
echo "All done!"

当从数据文件夹在终端中运行时,脚本可以工作。任何帮助/指导都将不胜感激。

您可能需要对脚本进行一些小的调整,以使其与鸭嘴兽水滴处理丢弃文件的方式兼容

以下是液滴工作原理的详细说明:

  • 首次启动应用程序时,脚本将运行一次
  • 当您将一个文件放入droplet时,脚本将以删除的文件作为参数运行
因此,问题的解决方案是重构脚本以处理传递的参数。在bash中,您可以使用
$#
作为参数总数,使用
$1、$2、$3
等作为其余参数。您还可以使用
$*
来使用所有参数

下面是一个示例脚本,它将输出水滴看到的传递文件的文件名(在applescript警报中)。请注意,如果传递了0个参数(
$#-eq 0
),则会出现if语句:

此脚本将一个已删除的文件夹、cd放入其中,然后执行原始脚本。如果没有传递一个参数(文件夹),那么它什么也不做


:)希望这有帮助

谢谢你的详细回复。我显然是新手,我会尝试你的建议。当我看到它如何工作时,我会发回。
    #!/bin/sh

    if [ $# -eq 0 ]
    then
        exit 0
    fi

    `/usr/bin/osascript << EOT
    tell app "System Events"
         display dialog "$# argument(s): $*"
    end tell                           
    EOT`
if [ "$#" -ne 1 ]
then
    exit 0
fi

cd $1
unzip *.zip -x *.cpg *.xml *.txt -d Processed
cd NavtecProcessed
zip -r * *
echo "Cleaning up your mess"
mkdir ~/Desktop/Final/
mv ./*zip ~/Desktop/Final/
sleep 2
cd ..
rm -r NavtecProcessed*
echo "All done!"