我在目录中有许多脚本都以deploy_
开头(例如,deploy_example.com
)。
我通常通过拨打./deploy_example.com
一次运行一个。
如何一个接一个地运行它们(或者如果可能的话,一次全部运行......)?
我试过了:
find deploy_* | xargs | bash
但是失败了,因为它需要绝对路径,如果这样调用。
答案 0 :(得分:3)
您可以通过多种方式完成此操作。例如,你可以这样做:
for i in deploy_* ; do bash $i ; done
答案 1 :(得分:3)
您可以这样做:
for x in deploy*; do bash ./$x; done
答案 2 :(得分:1)
find deploy_* | xargs -n 1 bash -c
将一个接一个地运行它们。查看xargs
的手册页和--max-procs
设置以获得某种程度的并行性。
答案 3 :(得分:1)
在子shell中执行以防止您当前的IFS和位置参数丢失。
( set -- ./deploy_*; IFS=';'; eval "$*" )
编辑:该序列被分解
( # start a subshell, a child process of your current shell
set -- ./deploy_* # set the positional parameters ($1,$2,...)
# to hold your filenames
IFS=';' # set the Internal Field Separator
echo "$*" # "$*" (with the double quotes) forms a new string:
# "$1c$2c$3c$4c..."
# joining the positional parameters with 'c',
# the first character of $IFS
eval "$*" # this evaluates that string as a command, for example:
# ./deploy_this;./deploy_that;./deploy_example.com
)