On Mon, Jul 19, 2010 at 02:43:22AM +0200, LuX wrote:
I am puzzled at the moment by the following problem. I would like to
list a part of the content of a directory (in /dev/disk/by-id, list
all the files whose name starts with 'usb') and make a test on this
list in order to perform some actions. For some reasons which I do not
understand, the result of the test is not correct when called by
wmiirc, although the same test and commands work pretty well when
executed in a dash shell, or when wmiirc calls an external bash (but
not a dash) script in order to perform them.
Hi,
First of all, you're making things too complicated. The
following would suffice:
AAA() {
for i in $HOME/.wmii/*; do
j=${i##*/}
if wmiir ls /rbar/test-$j >/dev/null 2>&1; then
# or:
# wmiir ls /rbar | grep test-$j >/dev/null; then
echo -n "$WMII_FOCUSCOLORS $j" | wmiir create /rbar/test-$j
sleep 1
wmiir remove /rbar/test-$j
fi
done
}
Second, your problem is that wmiirc disables globbing. This is
also the problem with your bbb script. You have the -f flag in
the shebang line when you run dash, but not bash. If you want it
to work, either add 'local set +f' to the function or ls the
directory rather than globbing its contents.
P.S. We use context (unified) diffs on this list.
--
Kris Maglione
UNIX was not designed to stop its users from doing stupid things, as
that would also stop them from doing clever things.
--Doug Gwyn