Страница 1 из 1

Скрипт для удаления пробелов и символов в строке

Добавлено: 2008-08-14 18:45:55
PSdok
Помогите написать скрипт, на sh, который определяет есть ли в строке символы [, ], /, \, пробел и удаляет их.

Re: Скрипт для удаления пробелов и символов в строке

Добавлено: 2008-08-14 19:33:20
zg

Код: Выделить всё

zg# echo "Hello/ \W \o/r[]l d!" | sed -e 's/[ \\\/\[]//g' -e 's/]//g'
HelloWorld!
zg#
man sed

Re: Скрипт для удаления пробелов и символов в строке

Добавлено: 2008-08-15 8:26:15
PSdok
Спасибо.
Но наверно мне надо было забать вопрос по другому.
На писал скрипт для работы с ctorrent.
Суть, скрипт сканирует определенную папку на наличие торрент файлов, проверяет запущены эти торренты или нет и если нет то запускает.

Код: Выделить всё

 cat /usr/local/etc/start_torrent.sh
#!/bin/sh

dpach=/mnt/sata/torrents/
ppach='/usr/local/bin/screen -dmS'
param='/usr/local/bin/ctorrent -p 48148 -S 127.0.0.1:2780'
last="(null)"
ttt=""
#---запускаю ctcs сервер, чтобы можно было через веб интерфейс закачками рулить.
$ppach CTCS /usr/local/etc/torrent/ctcs -u 30 -d 30


cd $dpach
#-- ищу торрент файлы в директории
ls *.torrent|
while read line
do
#----проверяю запущен ли screen с таким именем, если нет то запускаю
ttt=`screen -ls | grep $line | awk '{print $1}'`
if [ -z ${ttt}  ]
    then
    $ppach $line $param ${dpach}$line
     fi
    last=$line
done
exit 0
Но столкнулся с бедой , если в имени файла есть пробелы не срабатывает screen
а если символы []\|/ не работает grep.
В итоге торрент или не запускается или запускается несколько раз.

Re: Скрипт для удаления пробелов и символов в строке

Добавлено: 2008-08-15 9:23:37
zg
tormozok писал(а):есть пробелы не срабатывает screen
надо использовать кавычки

Код: Выделить всё

screen "$arg"
либо постраскрытие переменных man sh
tormozok писал(а):а если символы []\|/ не работает grep.
их надо экранировать, можно с помощью sed'а. Но я бы писал на php или perl, там есть специальные встроенные функции экранирования.

Re: Скрипт для удаления пробелов и символов в строке

Добавлено: 2008-08-16 21:25:30
PSdok
Переписал скрипт целиком.

Код: Выделить всё

cat /usr/local/etc/start_torrent2.sh
#!/bin/sh
dpach=/mnt/sata/torrents/
ppach='/usr/local/bin/screen -dmS'
param='/usr/local/bin/ctorrent -p 48148 -S 127.0.0.1:2780'
last="(null)"
#-останавливаю сервер ctcs
ps | grep ctcs | awk '{print $1}' |
while read line
do
    kill $line
done
sleep 5
$ppach CTCS /usr/local/etc/torrent/ctcs -u 30 -d 30

#-закрываю все screen  с торентами
ps | grep ctorrent | awk '{print $1}' |
while read line
do
    kill $line
done
sleep 10
#-проверяю папку с торрент файлами и запускаю их
cd $dpach
ls *.torrent|
while read line
do
    $ppach "$line" $param ${dpach}$line
    last=$line
done
exit 0
(не очень кравсиво но работает. Проблему с пробелами в имени не решил, удаляю пробелы руками)