如何运行除自身以外的目录中的每个脚本?

时间:2009-10-04 21:21:57

标签: bash shell scripting loops command

我的OS X工作站上有一个充满* .command文件的文件夹。

(对于那些不知道的人,* .command文件只是在专用终端窗口中启动和运行的shell脚本。)

我已将此文件夹拖到我的Dock上以使用“堆栈”,因此我可以通过几次点击方便地访问和启动这些脚本。

我想在堆栈中添加一个新的“run-all.command”脚本,该堆栈运行同一堆栈中的所有* .command文件,但它本身就有明显的例外。

My Bash chops太生锈了,无法回想起如何获取* .command文件的列表,迭代它们,跳过正在运行的文件,然后执行每个文件(在这种情况下我会使用“open”命令,所以每个* .command在其自己的专用终端窗口中打开。)

有人可以帮帮我吗?

2 个答案:

答案 0 :(得分:3)

使用@ bbg的原始脚本作为起点并结合来自@Jefromi和@Dennis Williamson的评论,并解决了一些目录前缀问题,我得出了这个工作版本:

#!/bin/bash
for x in "$(dirname $0)"/*.command
do
  if [ "$(basename $x)" != "$(basename $0)" ]
  then
    open "$x"
  fi
done

答案 1 :(得分:2)

这样的事情怎么样:

#! /bin/bash                                                                    

for x in ./*
do
        if [ "$x" != "$0" ]
        then
            open $x
        fi
done

其中$ 0自动保存正在运行的脚本的名称