Bash 将文件拖放到.sh文件上

Bash 将文件拖放到.sh文件上,bash,macos,batch-file,terminal,drag-and-drop,Bash,Macos,Batch File,Terminal,Drag And Drop,我对批处理有相当丰富的知识。我正试图将批处理脚本移植到Mac/UNIX,但批处理文件中有拖放功能。通过无数的谷歌搜索,我什么也没找到。他们都说你可以拖放到终端窗口中——这对于不需要输入的脚本来说是不好的 以下是我拥有的批次代码: cd %USERPROFILE% 7za x %* -o%USERPROFILE%\Desktop\Temp 7za a %1 %USERPROFILE%\Desktop\Temp\* cd %USERPROFILE%\Desktop rmdir /q /s Te

我对批处理有相当丰富的知识。我正试图将批处理脚本移植到Mac/UNIX,但批处理文件中有拖放功能。通过无数的谷歌搜索,我什么也没找到。他们都说你可以拖放到终端窗口中——这对于不需要输入的脚本来说是不好的

以下是我拥有的批次代码:

cd %USERPROFILE%

7za x %* -o%USERPROFILE%\Desktop\Temp

7za a %1 %USERPROFILE%\Desktop\Temp\*

cd %USERPROFILE%\Desktop
rmdir /q /s Temp\
不特别担心7za命令(因为存档实用程序)、cd
%USERPROFILE%
(因为终端在用户的配置文件中启动)、
rmdir
cd
,等等,因为它们只是基本的文件命令。但是我不知道引用使用.sh脚本拖放/打开的文件的代码


所以,如果有人知道那个密码,请告诉我。我知道这是一件很简单的事情,但你不可能知道每个命令,尤其是在处理不熟悉的编程语言时。

我不知道如何让原始脚本接受拖放文件,但有许多选项可以将其包装在其他接受拖放的命令中,并将文件传递给脚本。在我看来,最快的选择是将脚本包装到自动程序应用程序中。运行/Applications/Automator.app,选择应用程序作为新项目的类型,将“运行Shell脚本”操作从操作列表(第二列)拖到工作流(右列)中,将其“传递输入”设置为“作为参数”,粘贴到Shell脚本中,然后保存应用程序。完成了


包装shell脚本的其他选项包括:、和。

我做得太晚了,甚至还不知道拖放问题的答案。但是我注意到这看起来像是Windows的批处理脚本,
cmd.exe
,它在任何Unix shell中都不起作用。因此,您确实需要首先为Bash完全重写它

  • “\”是Unix中的转义字符。路径分隔符为“/”
  • Shell变量以“$”开头,而不是“%”。在Unix中,Windows
    %USERPROFILE%
    变量将是
    $HOME
  • 选项以“-”开头,而不是“/”
  • rmdir
    仅删除空目录。请参阅带有
    -f-r
    选项的
    man-rmdir
    man-rm
    ,了解与
    rmdir/q/s Temp
    Windows命令等效的命令

但是要注意,一旦你学会了一些Bash,你就会开始讨厌那种可怕的
cmd.exe
:-)

我测试过直接拖放到一个.sh文件上(在你回答这个问题之前),但它似乎不起作用。更不用说我必须在终端中自动打开.sh,而不是用户必须事先进行的文本编辑。有没有可能改为使用.command文件?我还没有找到一种方法,但如果有,我想知道。