小编Nor*_*ors的帖子

从shell脚本的参数列表中删除最后一个参数(bash)

这个问题涉及在automator osx中运行的bash脚本.我正在使用automator动作来获取和过滤来自finder的一堆文件引用.然后我通过自动机器操作将该文件夹的名称附加到该列表中.然后,Automator将这些参数提供给名为"run shell script"的操作.我不确定automator究竟是如何调用脚本的,但是当回显时,参数列表看起来像这样:echo "$@"

/ Volumes/G-Raid/Online/WAV_TEST/Testbok 50/01/01000 43-001.wav/Volumes/G-Raid/Online/WAV_TEST/Testbok 50/02/02000 43-002.wav/Volumes/G-Raid /在线/ WAV_TEST/Testbok 50/03/03000 43-003.wav/Volumes/G-Raid/Online/WAV_TEST/Testbok 50

在这种情况下,路径为3个文件和一个文件夹.

在shell脚本中,我启动了一个名为ripcheckc*的应用程序,其中args从automator传递,减去列表中的最后一个参数(文件夹).

我用它来删除最后一个参数:

_args=( "$@" )
unset _args[${#_args[@]}-1]
Run Code Online (Sandbox Code Playgroud)

这是echo $_args:

/ Volumes/G-Raid/Online/WAV_TEST/Testbok 50/01/01000 43-001.wav/Volumes/G-Raid/Online/WAV_TEST/Testbok 50/02/02000 43-002.wav/Volumes/G-Raid/Online/WAV_TEST/Testbok 50/03/03000 43-003.wav

与以前相同,但没有文件夹.

现在,如果我使用"$@"as参数运行ripcheckc 它可以工作(但由于参数列表中的最后一个路径,以后会失败)如果我使用${_args[@]}该应用程序将只是静默中止.当我回显$@并且_args输出看起来相同,除了最后一个参数.

我的问题是 - $ @和$ _args之间的区别是第一个有效输入而第二个没有?

*该应用程序是ripcheckc

我希望我的问题有道理.

编辑:解决了.

bash shell automator argument-passing

17
推荐指数
3
解决办法
1万
查看次数

标签 统计

argument-passing ×1

automator ×1

bash ×1

shell ×1