Posts mit dem Label scripts werden angezeigt. Alle Posts anzeigen
Posts mit dem Label scripts werden angezeigt. Alle Posts anzeigen

Dienstag, 26. Mai 2015

Background jobs, exit status

Figured another way to get an exit status of a job ran in background.

Obviously, these examples are simplified.
Each first of the two, is the 'one-liner' and the 2nd code box shows the structure with idention.

1) In this first one, we're sending the output of the background job into a variable, which we echo at the end.
This works, but doesnt really take advantage of a 'background' job.
ret=$(( sleep 2 ; [ -d not-existing ] ; echo $?) &)
echo $ret
ret=$(
    (
        sleep 2
        [ -d not-existing ]
        echo $?
    )&
)
echo $ret


2) This one applies alot more to what one usualy expects as a background job. (AFAIU) mkfifo lets the read-command wait until something is written to its passed file.

tmp=~/.cache/$$~ ; mkfifo "$tmp"
( sleep 10 ; [ -d not-existing ] ; echo $? > "$tmp") &
read RET < "$tmp" ; [ "$RET" = "0" ] && echo "GOOD!" || echo "BAD"
rm -f "$tmp"
tmp=~/.cache/$$~
mkfifo "$tmp"
(
    sleep 10
    [ -d not-existing ]
    echo $? > "$tmp"
) &
read RET < "$tmp"
[ "$RET" = "0" ] && echo "GOOD!" || echo "BAD"
rm -f "$tmp"
3) And to close the top 3, my most used code of these three.
This one loops while the background job is active and prints dots while its running. One could replace the printed string to update the text accordingly.

tmp="~/.cache/$~"
( sleep 5 ; [ -d not-existing ] ; echo $? > "$tmp") &
pid=$!
while ps $pid 1>/dev/zero;do sleep 0.5 ; printf ".";done
cat "$tmp"
tmp="~/.cache/$~"
(
    sleep 5
    [ -d not-existing ]
    echo $? > "$tmp"
) &
pid=$!
while ps $pid 1>/dev/zero
do
    sleep 0.5
    printf "."
done
cat "$tmp"

Last but not least, i'll have a tool to help with such a task.
Its called: tui-psm, which names Text User Interface - Paralell Script Manager.
You can pass as many scripts as an array can hold, and limit the paralell executed scripts to any number you want (5 is default).
tui-psm script1.sh script2.bash script3.csh

But it can more, for example, if you need at least 3 scripts to be executed successfully before you attempt to run script 5, this could be your approach:
tui-psm -cq script1.sh script2.bash script3.csh ./script4.zsh
[ $? -ge 3 ] && ./script5.ash

Hope this helped.
Have fun scripting!

Montag, 25. Mai 2015

Taming the beast, TUI back to stable

Now after the big excitement of the successfull changes to use an invidiual rc file for all its used variables, basic usage seems to be back to normal again.

It is causing a rush to figure one successfully installs the bash completition, accidently to a wrong and non-working path.

But this massive change also helped me to figure out which internal variables to share and which not, so i've added the function 'provides' to figure that out.

tui provides
Will print a hughe and long list with all the variables used internaly and which you may use as well.

If you
source  tui
you'll have all of those variables available, but sourcing just the rc file, and the wanted file providing the variables you want can increase usage speed.
source ~/.tui_rc || . tui
source $TUI_FILE_{APPS,SETTINGS}

Also several small hotfixes, of which i was sure i have had applied already 6 months ago....

Hope you like it, enjoy! :)

Freitag, 22. Mai 2015

TUI 0.8.0-2, The RC File release

Get it here:
https://github.com/sri-arjuna/tui/releases/tag/v0.8.0-2

Read about it here:
http://www.unix.com/shell-programming-and-scripting/253496-tui-text-user-interface-framework-scripts.html

Also the installation script has changed:


Hope you like the changes.
Enjoy! :)

Mittwoch, 6. Mai 2015

Get the extension of a filename

Every now and then, one needs to decide upon a file its extension what to do.

This is what i've added as tui-str-extension:
out=""
FN=$( echo "$1" | sed s," ","",g)    # Remove any spaces and make it a single string
for chance in $(echo "$FN"|sed s,"\."," ",g)    # Use dots as string seperators
do    out="$chance"
done
if [ "$out" = "$FN" ]
then    echo ""
else     echo "${out%\ /}"     # Remove any tailing or single space
fi
Hope you like it :)

Samstag, 22. November 2014

Dev-Scripts: Easily build 32 & 64 bit live images

This screenshot shows how easy one can build a kickstart project as 64 and 32 bit.
I love my tool :)


Sonntag, 2. November 2014

ds prj list

Just done a little nice feature to keep track of the modules used with a project:
ds prj list