LINUX.ORG.RU

Настройка меню

 


0

1

Нужно впихнуть выхлоп PipeRead в меню.

+ "$[gt.Usermount]"             Popup MenuUsermpoints

DestroyMenu MenuUsermpoints
AddToMenu   MenuUsermpoints
# Скрипт выводящий список точек монтирования
 + DynamicPopupAction Function MakeMenuUsermpoints
 
 AddToFunc MakeMenuUsermpoints
 + I DestroyMenu recreate MenuUsermpoints
 + I AddToMenu MenuUserpoints
 + I PipeRead \
 'for mpoint in `awk '$1 ~ /sd[d-z]/ {print $2}' /etc/fstab`; \
 do if [[ -z `mount | grep $mpoint` ]]; \
 then echo "AddToMenu MenuUsermpoints + \"Подключить $mpoint\" \
 Exec exec mount  $mpoint"; \
 else echo "AddToMenu MenuUsermpoints + \"Отключить  $mpoint\" \
 Exec exec umount $mpoint"; \
 fi; done'

Ошибка:

tail -f ~/.xsession-errors
sh: 1: Syntax error: EOF in backquote substitution
На выходе пустота.

★★★★

Последнее исправление: leonidko (всего исправлений: 1)

Похоже надо доработать выражение

awk '$1 ~ /sd[d-z]/ {print $2}' /etc/fstab
что бы в результате вместо перевода символа строки ставился пробел.

leonidko ★★★★
() автор топика

оформил бы это отдельным скриптом. и вместо if [[ -z `mount | grep $mpoint` ]] проще использовать if mountpoint -q «$mpoint»

ananas ★★★★★
()
Ответ на: комментарий от ananas

К сожалению мой путь в написании скриптов только начинается. Поэтому мне не понятно почему предложенный вами вариант проще. Сможете разъяснить?

Да и без переделки этого скрипта всё равно будет вылезать ошибка.

leonidko ★★★★
() автор топика
Ответ на: комментарий от leonidko

отдельный скрипт проще отладить.

#!/bin/sh

for mpoint in $(awk '/[^#].*[[:blank:]]+\// {print $2}' /etc/fstab); do
    if mountpoint -q "$mpoint"; then 
        echo "AddToMenu MenuUsermpoints + \"Отключить $mpoint\" Exec exec mount $mpoint"
    else 
        echo "AddToMenu MenuUsermpoints + \"Подключить $mpoint\" Exec exec umount $mpoint"
    fi
done

сохраняешь куда-нибудь в /usr/local/bin/getmp.sh, а его уже и дергаешь в PipeRead

ananas ★★★★★
()
AddToMenu   MenuUsermpoints
 + DynamicPopupAction Function MakeMenuUsermpoints

AddToFunc MakeMenuUsermpoints
+ I DestroyMenu recreate MenuUsermpoints
+ I AddToMenu MenuUserpoints Mountpoints Title
+ I PipeRead $[fvwm_scripts]/fvwm_make_usermount_menu.sh


cat ~/.fvwm/scripts/fvwm_make_usermount_menu.sh 

#!/bin/sh
for mpoint in `awk '$1 ~ /sd[d-z]/ {print $2}' /etc/fstab`;
do
 if mountpoint -q "$mpoint";
  then
   echo AddToMenu MenuUsermpoints "Отключить `$mpoint`" Exec exec umount  $mpoint
  else
   echo AddToMenu MenuUsermpoints "Подключить  `$mpoint`" Exec exec mount $mpoint
 fi
done
leonidko ★★★★
() автор топика
Ответ на: комментарий от leonidko

Скрипт выдаёт ошибку:

/home/leonid/.fvwm/scripts/fvwm_make_usermount_menu.sh: 1: /home/leonid/.fvwm/scripts/fvwm_make_usermount_menu.sh: /media/CORSAIR-sdh1: Permission denied

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