LINUX.ORG.RU

[Bash]Скрипт для автоматической смены картинок на десктопе

 


0

0

Вот собственно сабж:

#!/bin/bash
export DIR='/home/gln0fate/wallpapers'
export NUMBER=$RANDOM
export TOTAL=0
for f in 'ls $DIR'
do
let "TOTAL += 1"
done
let "NUMBER %= TOTAL"
export CURRENT=0
for f in 'ls $DIR'
do
if [ $CURRENT = $NUMBER ]
then
/usr/bin/gconftool-2 -t string
-s /desktop/gnome/background/picture_filename $DIR/$f
break
fi
let "CURRENT += 1"
done


Пытаюсь запустить:

gln0fate@debian:~/iDev/scripts$ sh ./change_wallpaper
Значение не установлено для ключа: "$DIR"


Где грабли? Я только учу bash.

Вот этот подсчет количества файлов

for f in 'ls $DIR' 
do 
let "TOTAL += 1" 
done

можно записать короче: TOTAL=`ls | wc -l`

Выбор файла: ls | sed -n ${NUMBER}p

Begemoth ★★★★★
()

И еще: export тут не нужен

Begemoth ★★★★★
()

ЗЗЫ: твой скрипт не будет работать если в каталоге есть файлы с именами, содержащими пробелы.

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

> ЗЗЫ: твой скрипт не будет работать если в каталоге есть файлы с именами, содержащими пробелы.

почему?

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

> почему?

жизнь таит еще много сюрпризов, Маугли.

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

По той же причине, что позволяет корректно работать команде rm * (заметь у нее не один параметр)

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

> Автор сотри все и сделай как dilmah написал — в одну строку.

ну картинку я выбрал, а как ее установить?

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

> 'ls $DIR' => `ls $DIR`

это не будет работать, если директория или имя файла картинки содержит пробелы.

cobold ★★★★★
()

Вместе с Fluxbox идёт программка fbsetbg, которая позволяет устанавливать и менять обои на рабочем столе, в т.ч. и выбирая случайные из каталога. Это так, к слову, авось кому будет полезно.

php-coder ★★★★★
()
Ответ на: комментарий от anonymous

>как же ты достал__долбодятел -- проблёвок а не программер __проблёвок__

нее -- хуже -- он СЦУКО=КРЫСА ;)

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