2013-01-10 255 views
0

请问有人会恢复我的理智?我使用这个脚本在'sites'目录的每个子目录中运行一个命令,排除'all'子目录。但是,当我运行这个时,'all'子目录仍在使用,即使我使用if语句来排除它。Bash脚本 - 将目录名称与字符串进行比较

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 

在此先感谢您的帮助!

布莱恩

+0

总是引用你的'“$变量”' –

回答

4

你离开了sites子目录:

if [ "$dir" = /local/users/drupadm/htdocs/drupal/drupal/sites/all ] 
+1

GRRRR !!!我知道我只需要第二双眼睛。谢谢。 –

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 

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

+1

不要使用find'\'这种方式\''。你知道,文件名中有空格。 –

+0

同意。推荐'find ... |同时阅读dir;做...;完成'而不是。 –

+0

我正在运行的盒子运行SunOS并且find命令不支持-maxdepth开关... –

-1

嗨,你需要做以下

如果[$ DIR = = “/本地/用户/ drupadm/htdocs中/的Drupal/Drupal的/都”]

感谢

-1

尝试引述$ dir,你会罚他们的名字空间目录杀了你。您也可以在调用时使用-vx开关运行脚本,以查看读入的内容和执行的内容。 bash -vx我的脚本 或 set -vx 不管。

+0

嘿ubfan。这应该是一个评论,因为它不直接回答问题。 –