S
S
SOTVM2019-06-08 21:35:35
linux
SOTVM, 2019-06-08 21:35:35

How to track if a key was pressed while executing a bash script?

We have the simplest bash script (launching the Caja file manager from the context menu)
you need to check the conditions directly in it, the script
if nothing is selected / selected - exit
if a directory was selected and Ctrl_Right was pressed execute command1 (change owner recursively)
if a directory / file was selected execute command2 (change owner only for the selected one)
otherwise execute command3
exit
PS
that's what I sadly piled up in half, BUT plugging in this line
if replaced it with: )
but I can’t figure out why it doesn’t change the owner, what’s wrong? Everything is fine through the console.

#!/bin/sh

path="$CAJA_SCRIPT_SELECTED_FILE_PATHS"
user='root'

# нахожу id активной клавы
idkb=$(xinput list | grep -Po 'AT Translated Set 2 keyboard\s+id=\d+' | grep -Po '\d+$')

# и присваиваю переменной key значение нажатой кнопки
#"key[105]=down" - нажата , "key[105]=up" - НЕ нажата .
key=$(xinput --query-state $idkb | grep -Po '105]=.*' )

# если в момент  выполнения скрипта была нажата клавиша Ctrl_Right 
#т.е предыдущая строка/команда вернула значение "key[105]=down"
#ПОЧЕМУ ТО ОШИБКА ,ПОЭТОМУ ПРИШЛОСЬ СДЕЛАТЬ ТАК
if [ $key != "105]=up" ]

then
# выводим сообщение и выполняем команду рекурсивного смены пользователя
sudo chown -R $user  $path && notify-send "рекурсивно"

else
# если нет , т.е. вернуло (должно вернуть "key[105]=up" ) ,
# тогда меняем пользователя только для выделенного  файла/директории
sudo chown $user $path  && notify-send "один" 
fi
# ПО БОЛЬШОМУ СЧЁТУ , ВСЕ СООБЩЕНИЯ В ЭТОМ КОДЕ,НУЖНЫ  ТОЛЬКО ДЛЯ ОТЛАДКИ
notify-send -t 3000 " владельцем nуть: $path  стал $user  кейкод  клавиши: $key" ;

Answer the question

In order to leave comments, you need to log in

1 answer(s)
A
Adamos, 2019-06-08
@Adamos

xneur AddAction

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question