[Liverpool] shell script (sh) : variable contains string?
Ben Arnold
iamseawolf at gmail.com
Thu Sep 3 12:29:55 UTC 2009
Hey all --
As I've run out of brick wall to bang my head against, I wonder if any of you
guys could help with a little problem I'm having in a shell (sh) script.
Basically, it's a start-up script that uses `Xvesa -listmodes` to list the
display resolutions available. I want to use either 1024x768x[8|16|24] if it's
there or the best available if it isn't. Getting the best is simply a case of
using `head -n 1` to get the first line.
I set the variable as a list of resolutions fine, I just can't find a clean way
of seeing if (1024x768x[8|16|24]) exists in the pre-defined variable. I've
tried eval too but it doesn't like it. Maybe the BusyBox version is #crap?
Thanks for anything!
Ben
NB -- It's an sh script, not bash. If it were bash, I could do
[variable =~ text]
and all is well, but I don't want to switch it and break the other code!
----------
#!/bin/sh
# This line produces a list of resolutions like:
# 640x480x16
# 640x480x24
# 800x600x16
# etc.Xvesa -listmodes also gives out some extra stuff which we don't want,
# neither is it sorted. So we need some fairy dust magic to tidy up. It goes:
# List all modes and messages | grep: get only those with a useful hex code
# awk: chop off the extra stuff | sort: highest to lowest.
export SCREEN_MODES=` Xvesa -listmodes 2>&1 | grep ^0x | awk '{ printf "%s
%s\n", $2 }' | sort -nr `
if [ `echo "${SCREEN_MODES}" | grep '1024x768x' ` ]; then
echo "Found a 1024x768 resolution, setting as default."
# Get the best one (i.e. 1024x768x[8|16|24])
export BEST_1024=`echo "${SCREEN_MODES}" | grep '1024x768x' | head -n 1 `
# May be ugly but the rest of the script needs NEW_SCREEN:
export NEW_SCREEN=${BEST_1024}
echo "Set display configuration to ${NEW_SCREEN}"
else
export NEW_SCREEN=`echo "${AVAILABLE_SCREEN_MODES}" | head -n 1`
echo "Standard 1024x768 resolution not found. Using highest available:
${NEW_SCREEN}"
fi
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 198 bytes
Desc: This is a digitally signed message part.
Url : http://mailman.lug.org.uk/pipermail/liverpool/attachments/20090903/80fb14c2/attachment.pgp
More information about the Liverpool
mailing list