Bash脚本 - 将目录名称与字符串进行比较

时间:2013-01-10 01:03:58

标签: bash

我正在使用此脚本在'sites'目录的每个子目录中运行命令,排除'all'子目录。但是,当我运行它时,'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 个答案:

答案 0 :(得分:5)

您遗漏了sites子目录:

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

答案 1 :(得分: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

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

答案 2 :(得分:-1)

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

if [$ dir ==“/ local / users / drupadm / htdocs / drupal / drupal / all”]

由于

答案 3 :(得分:-1)

尝试引用$ dir,你会很好的名字中有空格的目录会杀了你。您还可以在调用上使用-vx开关运行脚本,以查看读入的内容和执行的内容。 bash -vx我的脚本 要么 设置-vx 不管。