как разобрать строку в bash [Решено]

Изображение пользователя nitrofox.

1) У меня есть переменная pathfile. В ней путь к файлу. Допустим /home/nitrofox/Документ/kuku.deb. Мне нужно получить в переменную namefile kuku.deb
2) И программа максимум проверить есть в переменной русские символы или нету

Проблема с sed. Не могу разобраться с ним

Что хочу в результате:

  • Желательно проверить есть ли в pathfile русский(или еще лучше проверить есть ли в пути символы отличающиеся от английского и знаки[./_]) если нету запустить Qapt c pathfile
  • Проверяем есть ли папка /tmp/linkdeb/ в случае отсутствия создать(Тут проблем не возникает=))
  • В противном случае создать силку /tmp/linkdeb/$namefile и передать ее Qapt(Надеюсь тут проблем не будет)
  • Удалить силку (Надеюсь тут проблем не будет)
0
nitrofox - 6 Сентябрь, 2014 - 03:50
Изображение пользователя nitrofox.

Оказалось что qapt-deb-installer не хочет работать с силками приходится копировать файл =)
Имя файла решил генерировать nameFileLink=kuku$RANDOM.deb. Вроде с горем пополам работает =)
Нужно наверное еще реализовать чтобы если файл nameFileLink существует нужно повторить генерацию имени файла.. Непривычные условия в баше.. Сильно уж непривычно все по сравнению с С и PHP

UP
qapt-deb-installer работает с мягкими силками.. В коде нашел ошибку

0
nitrofox - 6 Сентябрь, 2014 - 08:10
Изображение пользователя nitrofox.

Если у когото также появится острая необходимость воспользоватся родным qapt на kubuntu можете попробовать этот скрипт.

#!/bin/bash

pathLink="/tmp/qcolt.s.s/"
mkdir "$pathLink" > /dev/null
count=10


if [ -n "${1:-}" ] && [ -a "$1" ]; then



    isFile=0
    i=0
    while [ "$isFile" -eq 0 ]
    do
nameFileLink="kuku$RANDOM.deb"
file="$pathLink$nameFileLink"
echo $file


  if [ -a "$file" ]
      then
      echo "Файл уже есть"
      else
      isFile=1
  fi


echo "$i"
let "++i"
if [ "$i" -ge "$count" ]
    then
    zenity --info --title="Ошибка" --text="Не удалось создать файл"
    exit 2
fi

    done
    if [ -n "${file:-}" ]; then
      rm $file
     
    fi
    #cp $1 $file
    ln -s "$1" "$file"
    qapt-deb-installer "$file"
    #rm "$file"
   
else zenity --info --title="Ошибка" --text="Файл \"$1\" отсутствует"
fi

Вроде бы работает

+2
Tonal - 7 Сентябрь, 2014 - 18:59
Изображение пользователя Tonal.

basename
dirname

0
nitrofox - 8 Сентябрь, 2014 - 01:27
Изображение пользователя nitrofox.

Спасибо, буду знать. А еще один маленький вопрос. А как правильно склеивать строки
nameFileLink="kuku$RANDOM.deb" выглядит както неправильно, хоть и работает.
Префикс: "kuku"
Случайное число: $RANDOM
Концовка: ".deb"

0
Гость - 22 Сентябрь, 2014 - 07:51

Оборачивайте переменную в {}, ну или $(echo "kuku")$(echo "$RANDOM")$(echo ".deb"). Но всеже kuku${RANDOM}.deb выглядит более вменяемо.

Отправить комментарий

CAPTCHA на основе изображений
Введите цифры