1

我正在使用此脚本在“站点”目录中的每个子目录中运行一个命令,不包括“所有”子目录。但是,当我运行它时,'all' 子目录仍在使用中,即使我使用 if 语句来排除它。

for dir in ~/htdocs/drupal/drupal/sites/*
  do
  if [ $dir = "/local/users/drupadm/htdocs/drupal/drupal/all" ]
    then
    continue
  fi
echo $dir
(cd $dir && /opt/webstack/php/5.2/bin/php /local/users/drupadm/drush/drush.php $1)
done

布莱恩

4

4 回答 4

7

您遗漏了sites子目录:

if [ "$dir" = /local/users/drupadm/htdocs/drupal/drupal/sites/all ]
于 2013-01-10T01:08:33.140 回答
0
IFS=$'\n'
for dir in `find ~/htdocs/drupal/drupal/sites/ -maxdepth 1 -type d ! -name all -printf '%p\n'`
do
    echo $dir
    (cd $dir && /opt/webstack/php/5.2/bin/php /local/users/drupadm/drush/drush.php $1)
done
IFS=' '

首先排除该目录,使用find

它被调用

find dir_name [tests...]

我的命令使用的测试:

-maxdepth 1

直系子女...

-type d

... 查找目录 ...

! -name all

... 未命名为“全部”。

于 2013-01-10T01:09:03.527 回答
-1

您好,您需要执行以下操作

如果 [ $dir == "/local/users/drupalm/htdocs/drupal/drupal/all" ]

谢谢

于 2013-01-10T01:10:54.563 回答
-1

尝试引用 $dir,您会发现名称中带有空格的目录会杀死您。您还可以在调用时使用 -vx 开关运行脚本,以查看读入的内容和执行的内容。bash -vx 我的脚本或设置 -vx 什么的。

于 2013-01-10T01:19:19.177 回答