我在sh shell中执行基本脚本时遇到了一些困难。我想做的很简单:
我想做一个sh脚本(也可以是csh),该脚本可以查看多个文件夹,对于包含我感兴趣的文件的每个文件夹,它应该执行特定的操作,将相应的文件名粘贴到带有rdseed的sh脚本中命令。
我在sh shell中编写的脚本不起作用:
for dir in EV*
do
echo $dir
cd $dir
if [ -f GEFLE* = true ];
then
set dataless = gur_ini_dataless.seed
for file GEFLE*
do
echo "rdseed -d -o 2 -f "$file " -g " $dataless >> runmseed2ahGEFLE.sh
done
else
echo "File does not exists"
fi
sleep 0.5
cd ..
done
有人知道解决方案吗?
请尝试这个...我要在行中添加一些评论...
#!/bin/sh
for dir in EV*
do
echo $dir
cd $dir
if [ -f GEFLE* ] # true if at least one FILE named "GEFLE*" exists
then
dataless=gur_ini_dataless.seed # no `set`, no spaces
for file in GEFLE* # will match all FILES/DIRS/... that start with "GEFLE"
do
echo "rdseed -d -o 2 -f $file -g $dataless" >> runmseed2ahGEFLE.sh # vars are substituted in double quoted strings
done
else
echo "File does not exists"
fi
cd ..
done
请注意,这只会在目录中查找一级。如果您需要复活,最好使用类似
for dir in `find . -type d -name 'EV*'`; do
# ...
done
我所说的方式是:
for f in `find EV* -name GEFLE* -type f`; do
echo "rdseed -d -o 2 -f ./$f -g gur_ini_dataless.seed >> ./`dirname $f`/runmseed2ahGEFLE.sh"
done
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句