LINUX.ORG.RU

Скрипт некорректно запускается в gmrun и i3

 , , ,


0

1

Доброго времени суток, господа.

Написал скрипт для создания скриншотов и автоматической их заливки на картинкохостинги.

#!/usr/bin/env bash

getrandom=`head -c 12 /dev/urandom | base64 | sed 's:/::g'`

if [[ -d "$HOME/YandexDisk/shot" ]]; then
	scrot "${HOME}/YandexDisk/shot/${getrandom}.png"
	echo -n "http://crapcannon.tk/yadisk/lucidlynx/shot/"$getrandom".png" | xclip
	notify-send "Screenshot uploaded to Yandex.Disk"
else
	imagename="${HOME}/images/screenshot/${getrandom}.png"
	scrot $imagename
	bchs image $imagename | cut -f 1 -d ' ' | xclip
	notify-send "Screenshot complete"
fi

При запуске из командной строки скрипт послушно заливает картинку на bitcheese и засовывает url в буфер обмена. При запуске хоткеем из i3 или ручном запуске из gmrun вываливается лишь нотификация, а в буфере обмена пусто. Что я делаю не так?

★★

Последнее исправление: cetjs2 (всего исправлений: 1)
Ответ на: комментарий от kostik87
nb-crunchbang :: ~/bin » ls -lh | grep shoot
-rwxr-xr-x 1 buckstabu buckstabu  464 авг  3 18:36 shoot
like-all ★★
() автор топика

При запуске хоткеем из i3

А код гдеа?

или ручном запуске из gmrun

Обёртки не нужны. В том числе и поэтому.

Твоя bchs где лежит вообще?

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

А код гдеа?

bindcode 107 exec /home/buckstabu/bin/shoot

Твоя bchs где лежит вообще?

В ~/bin. А ~/bin есть в $PATH. Сам скрипт:

#!/usr/bin/env bash

usage()
{
	echo "Usage: dump <file|image|text> [file] [language]"
}

case $1 in
	file) 
		URL=`curl -w %{redirect_url} -F "file=@$2"		http://dump.bitcheese.net/upload-file?simple` 
		echo "$URL [$URL/preview]" ;;
	image) 
		URL=`curl -w %{redirect_url} -F "file=@$2" http://dump.bitcheese.net/upload-image?simple`
		echo "$URL [$URL/preview]" ;;
	text)
		if [ -z $3 ] ; then
			LANG=Plaintext
		else
			LANG=$3
		fi
		URL=`curl -w %{redirect_url} -F "lang=$LANG" -F "text=@$2" http://dump.bitcheese.net/upload-text`
		echo $URL ;;
	*) usage;
esac
like-all ★★
() автор топика
Ответ на: комментарий от Artificial_Thought

В гнутом баше вполне.

Что за бред? bash - это же не стандарт, не семейство, а конкретная реализация. Зачем добавлять _гнутый_, или я чего-то не знаю?

anonymous
()
Ответ на: комментарий от like-all

В ~/bin. А ~/bin есть в $PATH

i3 про это в курсе, а то мало ли где экспорт? btw разве так сложно дихотомией выяснить что именно накрывается.

anonymous
()
Ответ на: комментарий от like-all

А $PATH экспортируется в ~/.bashrc, угадал? Модифицируй его в ~/.pam_environment:

$ cat .pam_environment|grep PATH
PATH DEFAULT=${PATH}:${HOME}/.local/bin

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

Не бред а _обычное_ бесполезное уточнение.

Дык, есть несколько разных bash (разумеется, не учитывая разные версии)?

anonymous
()
Ответ на: комментарий от like-all

bindcode 107 exec /home/buckstabu/bin/shoot

Я бы добавил ещё --no-startup-id к exec, а то i3 может ждёт, когда там окно что-то вернёт, а оно не вернёт, потому что окна нет. shoot точно имеет +x в правах? (А то может ты сорсил из шелла).

В ~/bin. А ~/bin есть в $PATH.

Для кого есть? Для того, кто сорсит твой ~/.bashrc? Там ещё и шелл интерактивным должен быть (если по-умолчанию). Попробуй из gmrun или через хоткей в i3 запустить

zenity --info --text "`/bin/bash -c "echo $PATH" | sed 's/:/\n/g'`"
И посмотреть, будет оно там или нет.

Сам скрипт:

Никогда не используй параметы без кавычек. Везде, где ты проверяешь «$somewhat» оно должно быть в кавычках. И в case и в if и в test и т. д.

LANG=Plaintext

А за такое вообще бьют по рукам. LANG — переменная окружения, определяющая локаль, и ты её трогать для иных целей не должен.

Кстати,

		if [ -z $3 ] ; then
			LANG=Plaintext
		else
			LANG=$3
		fi
можно записать проще —
[ "$3" ] && paste_lang="$3" || paste_lang=Plaintext

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

[ «$3» ] && paste_lang=«$3» || paste_lang=Plaintext

позор же ${3:-Plaintext} :Р.

anonymous
()
Ответ на: комментарий от Deleted

можно записать проще

Даже ещё проще

URL=`curl -w %{redirect_url} -F "lang=${3:-Plaintext}" -F "text=@$2" http://dump.bitcheese.net/upload-text`

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