[Решено]задачка без звёздочки bash

надо вот это:
while true; do
if [[ -n $i ]];then
        echo 1 && i=;
else
        echo 0 && i=1;
fi
sleep 1
done

привести к такому виду (ну типа такого):
i=1
func(){
if [[ -n $1 ]];then
        echo 1 && i=;
else
        echo 0 && i=1;
fi
}

while true; do
        echo $(func $i)  ( "command $(func parm)" эт обязательный формат)
sleep 1
done

что то я запутался, надо спать идти...
Ошибки в тексте-неповторимый стиль автора©
так не подойдет?
N=1

func1() {
    [[ ${N} == 1 ]] && N=0 || N=1
    echo ${N}
}

while true
do
    func1
    sleep 1
done

Псевдографический инсталлятор Arch Linux ver. 3.8.2
Благодарности принимаются на ЯД 410012815723874
сама фишка это вызов, он должен быть такой
echo $(func)
ну в итоге такой
xsetroot -name "$(func),$(func2),$(func3)" и тд.
сори что сразу ненаписал...
Ошибки в тексте-неповторимый стиль автора©
func1() {
    N=0
    I=1
    while true
    do
        [[ ${N} == 1 ]] && N=0 || N=1
        echo -n "${N}"
        I=$[I+1]
        [[ ${I} > ${1} ]] && return
        echo -n ','
    done
}

echo "xsetroot -name \"$(func1 5)\""
получится что то типа
xsetroot -name "1,0,1,0,1"
Псевдографический инсталлятор Arch Linux ver. 3.8.2
Благодарности принимаются на ЯД 410012815723874
ну как бы вывод сильно отличается, да и while внутри функции не прокатит(

echo 0 > /tmp/var

fu(){
if [[ `cat /tmp/var` == 1 ]];then
        echo 0 && echo 0 > /tmp/var
else
        echo 1 && echo 1 > /tmp/var
fi
}

while true; do
echo $(fu)
sleep 1
done

кароче вот такой идиотизм получился у меня... только мне стыдно даже его показывать((
кто нить может подсказать как отделатся от перменной в файле? может есть какой нить механизм работы с глобальными переменными в bash??
Ошибки в тексте-неповторимый стиль автора©
а я вообще бросил эти командные интерпретаторы. много чего через одно место делается :((
не понимаю почему они еще не заменены хотя бы питоном.
Псевдографический инсталлятор Arch Linux ver. 3.8.2
Благодарности принимаются на ЯД 410012815723874
кстати, лучше вместо /tmp/var использовать
TEMPFILE="$(mktemp)"
Псевдографический инсталлятор Arch Linux ver. 3.8.2
Благодарности принимаются на ЯД 410012815723874
nafanja
а я вообще бросил эти командные интерпретаторы. много чего через одно место делается :((
не понимаю почему они еще не заменены хотя бы питоном.
э не ну его))

nafanja
кстати, лучше вместо /tmp/var использовать
TEMPFILE="$(mktemp)"
не думаю... но спасибо

я нашёл на лоре эт вопрос уже поднимался, ответ коротко: "bash так не умеет"
Ошибки в тексте-неповторимый стиль автора©
indeviral
э не ну его))
Поддержу nafanja, но с одним уточнением — Python, как и Perl и Bash , по народному говоря, являются скриптовыми языками, то бишь относятся к интерпретируемым.
UPD... Perl среднее между ними, более прост чем Python, но в отличии от Bash уже поддерживает глобальные переменные.
Ошибки не исчезают с опытом - они просто умнеют
 
Зарегистрироваться или войдите чтобы оставить сообщение.