shell脚本循环通过通配符匹配的目录

时间:2013-04-11 17:03:10

标签: linux shell loops for-loop directory

我正在尝试遍历匹配通配符的目录。这在命令行中工作正常。但是在Shell脚本中不起作用。有什么想法吗?

   for dirs in /var/www/html/my.domain.com/v*; do echo $dirs; done;

以上命令列出

  /var/www/html/my.domain.com/v1.0
  /var/www/html/my.domain.com/v1.2
  /var/www/html/my.domain.com/v2.0

这是Shell脚本版本。它不起作用:

 dirs=/var/www/html/my.domain.com/v*
 for dir in $dirs
 do
   echo "$dir"
 done

也试过这个:

dirs=`/var/www/html/my.domain.com/v*` #back quotes
for dir in $dirs
do
   echo "$dir"
done

1 个答案:

答案 0 :(得分:3)

/var/www/html/my.domain.com/v*这样的

Glob patterns bash 功能。当您使用sh script.sh启动脚本时,bash似乎不是系统上的默认shell。

确保使用bash启动脚本:

bash script.sh

如果您要使用chmod +x script.sh直接使脚本可执行,请确保您不会错过在第一行中使用以下shebang

#!/bin/bash