LINUX.ORG.RU

Поторопился.. Выдет вот такую ошибку. Чтобы это могло значить??

cheezee@ubuntu:~$./translit.sh ./translit.sh: line 8: syntax error near unexpected token `then' ./translit.sh: line 8: `TRS=`echo $NAME | tr абвгдезийклмнопрстуфхцы abvgdezijklmnoprstufhcy` TRS=`echo $TRS | tr АБВГДЕЗИЙКЛМНОПРСТУФХЦЫ ABVGDEZIJKLMNOPRSTUFXCY` TRS=${TRS//ч/ch}; TRS=${TRS//Ч/CH} TRS=${TRS//ш/sh}; TRS=${TRS//Ш/SH} TRS=${TRS//ё/jo}; TRS=${TRS//Ё/JO} TRS=${TRS//ж/zh}; TRS=${TRS//Ж/ZH} TRS=${TRS//щ/sh\'}; TRS=${TRS//Щ/SH\'} TRS=${TRS//э/je}; TRS=${TRS//Э/JE} TRS=${TRS//ю/ju}; TRS=${TRS//Ю/JU} TRS=${TRS//я/ja}; TRS=${TRS//Я/JA} TRS=${TRS//ъ/\`}; TRS=${TRS//ъ\`} TRS=${TRS//ь/\'}; TRS=${TRS//Ь/\'} if [[ `file -b "$NAME"` == directory ]]; then' cheezee@ubuntu:~$

cheezee
() автор топика

Ну, настырный :)

Вот тебе скрипт. Почему #!/bin/bash? Потому что /bin/dash глючит с
юникодом. Можно #!/usr/bin/ksh, если pdksh стоит.

Для FAT32, конечно, он избыточен, но мне лень сильно переделывать существующий скрипт :)

===== START SCRIPT ====
#!/bin/bash

translit()
{
    sed 'y/абвгдезиклмнопрстуфцъыьАБВГДЕЗИКЛМНОПРСТУФЦЪЫЬ/abvgdeziklmnoprstufc"y'\'
'ABVGDEZIKLMNOPRSTUFC"Y'\''/
s/ё/jo/
s/Ё/JO/
s/ж/zh/
s/Ж/ZH/
s/й/jj/
s/Й/JJ/
s/х/kh/
s/Х/KH/
s/ч/ch/
s/Ч/CH/
s/ш/sh/
s/Ш/SH/
s/щ/shh/
s/Щ/SHH/
s/э/eh/
s/Э/EH/
s/ю/ju/
s/Ю/JU/
s/я/ja/
s/Я/JA/' "$@"
}

if which mktemp >/dev/null 2>&1; then
    TEMP=`mktemp -d`
else
    TEMP=$TMPDIR
    test -z "$TEMP" && TEMP=/tmp    
    TEMP=$TEMP/trans-$$.tmp
    mkdir -m 0700 "$TEMP" || exit 1
fi
trap "rm -rf $TEMP" EXIT INT QUIT ABRT TERM

for d; do
    dir=`readlink -f "$1"`
    f1=$TEMP/f1
    f2=$TEMP/f2

    find "$dir" -printf '%p\t%l\n' |sort >$f1

    translit $f1|sort >$f2

    join -v1 -t '
' $f1 $f2 |tac |cut -d\  -f1 |

    while read f; do
        d2=`dirname "$f"`
        b2=`basename "$f" |translit`
        f2="$d2/$b2"

        if test -L "$f"; then
            l1=`readlink "$f"`
            l2=`echo "$l1" |translit`
            test "$l1" != "$l2" && ln -fsn "$l2" "$f"
        fi
        test "$f" != "$f2" && mv -f "$f" "$f2"
    done
done
===== END SCRIPT =====

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