我试图循环通过匹配通配符的目录.这在命令行中工作正常.但是在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
解决方法:
像/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