Re: Does anyone know bash scripting?
Posted: Mon Nov 17, 2014 12:52 pm
Thanks for the alternative way. I'll take into consideration when I'll commence hacking on the unix build system.
Code: Select all
PREFIX=whatever
eval ${PREFIX}_DEFINES=content
echo $whatever_DEFINES #outputs 'content'
Code: Select all
#!/bin/sh
awk=/usr/bin/awk
tee=/usr/bin/tee
### Assigment of variable to be processed.
CFLAGS='xxx -I/usr/local/include/libtorrent -DRANDOM_DEF yyy -I/usr/local/include/boost -DRANDOM_DEF2=456 zzz'
### Processing start here.
### Cut and paste between the two dotted comment lines.
### -------------------------------------------------------------------------------------------------------------
VAR1=`echo $CFLAGS | $awk -F" " '{ for ( i=1; i<=NF; i++ ) if ( $i ~ /^-I/ ) printf "%s ", $i }'`
VAR2=`echo $CFLAGS | $awk -F" " '{ for ( i=1; i<=NF; i++ ) if ( $i ~ /^-D/ ) printf "%s ", $i }'`
VAR3=`echo $CFLAGS | $awk -F" " '{ for ( i=1; i<=NF; i++ ) if ( $i !~ /^-I/ && $i !~ /^-D/ ) printf "%s ", $i }'`
### Strip away extra characters.
VAR1=`echo $VAR1 | $awk '{ gsub("-.| $", "", $0); print }'`
VAR2=`echo $VAR2 | $awk '{ gsub("-.| $", "", $0); print }'`
VAR3=`echo $VAR3 | $awk '{ gsub(" $", "", $0); print }'`
echo $VAR1
echo "--------------------"
echo $VAR2
echo "--------------------"
echo $VAR3
echo "--------------------"
Code: Select all
#!/bin/sh
# $1: String to parse
# Set $DEFINES, $INCLUDES, $OTHER
extract() {
if [ -z "$1" ]; then
echo "Input string required"
return 1
fi
# Convert " -" to "\n" if not between quotes
string=$(echo " "$CFLAGS | sed -e 's: -:\n:g' -e 's:"\(.*\)\n\(.*\)":\"\1 -\2":g' -e "s:'\(.*\)\n\(.*\)':\'\1 -\2':g")
SAVEIFS=$IFS
IFS=$(printf "\n\b")
for i in $string; do
case "$(echo "$i" | cut -c1)" in
'') ;;
D) VAR2="$(echo $i | cut -c2-) $VAR2";;
I) VAR1="$(echo $i | cut -c2-) $VAR1";;
*) VAR3="-$i $VAR3";;
esac
done
IFS=$SAVEIFS
}
CFLAGS='xxx -I/usr/local/include/libtorrent -DRANDOM_DEF yyy -I/usr/local/include/boost -DRANDOM_DEF2=456 zzz'
extract $CFLAGS
echo $VAR1
echo "--------------------"
echo $VAR2
echo "--------------------"
echo $VAR3
echo "--------------------"
Code: Select all
/usr/local/include/boost /usr/local/include/libtorrent
--------------------
RANDOM_DEF2=456 zzz RANDOM_DEF yyy
--------------------
- xxx
--------------------
Code: Select all
/usr/local/include/boost /usr/local/include/libtorrent
--------------------
RANDOM_DEF2=456 zzz RANDOM_DEF yyy
--------------------
- xxx
--------------------
Code: Select all
CFLAGS='-xxx -I/usr/local/include/libtorrent -DRANDOM_DEF -yyy -I/usr/local/include/boost -DRANDOM_DEF2=456 -zzz'
Code: Select all
/usr/local/include/boost /usr/local/include/libtorrent
--------------------
RANDOM_DEF2=456 zzz RANDOM_DEF yyy
--------------------
- xxx
--------------------
Code: Select all
CFLAGS='-xxx -I/usr/local/include/libtorrent -DRANDOM_DEF -yyy -I/usr/local/include/boost -DRANDOM_DEF2=456 -zzz'