LINUX.ORG.RU

bash Bad substitution


0

0

есть скрипт: 
(для поддержки манов в vim от php)

  1 for f in *.txt
  2 do
  3    echo "$f"
  4    num=`grep -n ^Description $f`
  5    dn=`echo "$num"|awk -F ":" '{print $1}'`
  6    if [ -n "$dn" ]
  7    then
  8      fn=$((dn+2))
  9      cat "$f"|sed -e "s/^/\/\//"|  sed -e "$fn s/^\/\///"|sed -e "1,/\_\_/ d"|sed -e "/\_\_/,1200 d">$f.tmp
 10      cat /dev/null> $f.tmp2
 11      while read lll
 12      do
 13       comment=${lll:0:2}
 14       if [ "$comment" == "//"  ]
 15       then
 16        echo "$lll">>$f.tmp2
 17       else
 18        echo "$lll"|awk '{print "function "$2$3$4$5$6$7$8$9":"$1}'>>$f.tmp2
 19       fi
 20       done <$f.tmp
 21     cat php-start-tag $f.tmp2  php-stop-tag>$f.php
 22     rm $f.tmp $f.tmp2 $f.txt $f.html
 23     fi
 24 done
 25 ctags *.php

в р-те он выпоолняет работу для нескольких файлов (4,5)
а потом отваливается, пример работы:

about.translations.html.txt
aliases.html.txt
appendices.html.txt
class.com.html.txt
txt2php.sh: 24: Bad substitution
[blackICE] txt >             

в чем может быть проблемма ?
anonymous

Re: bash Bad substitution

В чем проблемма сказать не могу, но может быть надо read -r?

А в целом "cat /dev/null> $f.tmp2" зачем? просто > $f.tmp2 хватает. А в целом, зачем sed, если вы используете awk, то хотя бы весь цикл while read замените пишите в awk

mky ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.