让 shell 脚本服务以多个文件作为输入吗?

让 shell 脚本服务以多个文件作为输入吗?

我将以下 shell 脚本 (/bin/bash) 保存为服务。

for f in "$@"
    do  ln -s "$@" "$@_deleteLinkExtAfterMoving.link"
done

该服务接收文件或文件夹作为输入,并作为参数传递。它为选定的文件/文件夹创建符号链接。但是,如果我选择多个文件,脚本就会失败。如何在选择多个文件/文件夹的情况下使其工作,以便我可以一次创建多个符号链接,无论是在本地驱动器分区之一上,还是在已安装的 USB 存储驱动器上?

在 macOS 10.12.6 Sierra 上,Automator 版本 2.7。

答案1

正如所写,您的代码ln -s每次都会使用整个参数列表调用您拥有的参数的次数。也许您的意思是:

for f in "$@"
    do  ln -s "$f" "${f}_deleteLinkExtAfterMoving.link"
done

如果您想在同一个ln -s调用中建立多个链接,那么目标应该是一个目录。

ln -s /path1/to/file1 /path2/to/file2 /path/to/target/directory

在这种情况下,链接将使用源的基本名称(即/path/to/target/directory/file1/path/to/target/directory/file2)创建。对于你的情况,如下所示:

ln -s "$@" "/path/to/directory/with/links/to/files/to/delete"

相关内容