Christopher Barry on 29 May 2016 18:22:25 -0700 |
[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]
Re: [PLUG] Bash question |
On Sun, 29 May 2016 17:26:58 +0000 (UTC) Gregory Deal <1deal@comcast.net> wrote: >Even after checking the "learning bash" book and searching, I'm having >a little trouble explaining some bash functioning. I'm trying to >process some command output, making an array of its output lines. I >was trying to check for the "no output" case (which goes right back to >a prompt) by interrogating the final array length. But even with no >command output, I get a length of 1. Could someone explain this? >Thanks. > >Script: > >#!/bin/bash > ># DTD specifies 0 or 1 <rules>, so check if any before processing. >echo "Rules content:" >xmlpathval.py ~/program1/sample2.xml "/sync/rules[1]/text()" | >while IFS= read -r line; do >echo "-->'$line'" >done >echo "IFS='$IFS'" > >rulesInfo=$(xmlpathval.py ~/program1/sample2.xml >"/sync/rules[1]/text()") <<<<<<< raw output shown below if [[ -z >$rulesInfo ]]; then echo "No rules found." >fi >echo "rulesInfo='$rulesInfo'" > >IFS= >unset rulesArray >readarray -t rulesArray <<< "$rulesInfo" >echo "length=${#rulesArray[@]}" >if [[ ${#rulesArray[@]} -eq 0 ]]; then >echo "empty" >else >echo "not empty" >fi >echo "rulesArray(single echo)=${rulesArray[@]}" >echo rulesArray from loop= >for element in "${rulesArray[@]}" >do >echo "'$element'" >done > >Input: > >gkd@sisko:~/program1$ xmlpathval.py sample2.xml >"/sync/rules[1]/text()" gkd@sisko:~/program1$ echo $? >0 > >Results : > >gkd@sisko:~/scripts$ ./test.sh >Rules content: >IFS=' >' >No rules found. >rulesInfo='' >length=1 >not empty >rulesArray(single echo)= >rulesArray from loop= >'' >gkd@sisko:~/scripts$ > > t=( '' ) echo ${#t[@]} 1 yet, [[ ${t[@]} ]] && echo yes <no output> therefore, test for an actual value in ${rulesArray[@]} as well (( ${#rulesArray[0]} )) && [[ "${rulesArray[@]}" ]] && do stuff -- Regards, Christopher ___________________________________________________________________________ Philadelphia Linux Users Group -- http://www.phillylinux.org Announcements - http://lists.phillylinux.org/mailman/listinfo/plug-announce General Discussion -- http://lists.phillylinux.org/mailman/listinfo/plug