2013-01-10 253 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。這應該是一個評論,因爲它不直接回答問題。 –