LINUX.ORG.RU

bash занесение резуотатат команды в переменную


0

1
	L="find /media/Files/Media/Media_mix/Photo/wappers -regex '.+\.\(bmp\|png\)' | tr '\n' ' '"
	for x in $L do 
		echo $x
	done

смысл в том, чтоб занести в L все картинки из папки и обработать каждую. Но не работает

./my.sh: line 37: syntax error near unexpected token `echo' ./my.sh: line 37: ` echo $x'


Что ты хочешь сделать?

// Просто выдающийся говнокод

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

Зато у меня с раскраской синтаксиса.

KblCb ★★★★★
()

фигню делаешь; либо find, либо цикл в баше. правильно так:

find ... -print0 |xargs -0 обрабатывалка_картинок

или

for i in *.bmp *.png */*.png */*.bmp; do
  обрабатывалка_картинок «$i»
done
твой вариант отвалится при наличии пробелов в имени файла

anonymous
()

используй вместо двойных кавычек ´ - тогда в переменную будет записан результат выполнения комманды

xawe
()
#!/bin/bash
find /media/Files/Media/Media_mix/Photo/wappers -regex '.+\.\(bmp\|png\)' -print0 | while read -d $'\0' -r x
do
echo «$x»
done
AITap ★★★★★
()

если я правиьльно помню, точки с запятой перед do не хватает

либо

for x in $L; do
либо
for x in $L
do

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

for x in ~/Картинки/*.{bmp,png}; do echo «$x»; done

// Никакие пробелы в именах файлов не страшны, если не забывать везде расставлять кавычки вокруг $x

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

Решено

всем спасибо, помогла вот такая конструкция «$(command)»

Но немного поразмыслив и переселив руки капельку выше, данную задачу решил другой конструкцией.

[code]

pre=«file:» florder=«/media/Files/Media/Media_mix/Photo/wallpaper/» time=20

pic(){ pic=`ls $florder |grep '\(png\|gif\|jpg\|jpeg\)$'|shuf -n 1` GSETTINGS_BACKEND=dconf gsettings set org.gnome.desktop.background picture-uri ${pre}${florder}${pic} sleep $time }

i=0 while [ ""-z ] do pic done [/code]

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