Re: [gentoo-user] OT - Question about new bash [SOLVED]
On 29/01/06, Norberto Bensa [EMAIL PROTECTED] wrote: Perhaps you got some file named: hey I am a long file name with spaces.jpg ;) No it can't be that, see the for before hand, that will separate at whitespace by default (unless you tamper with IFS), so the variable tested will be without whitespace, I can only guess its a charset or similar that is causing the issue. Anyway, good to see that it sorted it, point for the future, quote your variables in [ ] 's :) z
Re: [gentoo-user] OT - Question about new bash [SOLVED]
znx wrote: No it can't be that, see the for before hand, that will separate at whitespace by default No, it won't. Try it. (unless you tamper with IFS), so the variable tested will be without whitespace, No, it won't. I can only guess its a charset or similar that is causing the issue. I rather suppose, that he has filenames with spaces. Anyway, good to see that it sorted it, point for the future, quote your variables in [ ] 's :) Of course - ever and always quote variables, unless you can be totally certain about the contents. Alexander Skwar -- You're gonna have to answer to the Coca-Cola company. -- Colonel Bat Guano, Dr. Strangelove or: How I Learned to Stop Worrying and Love the Bomb -- gentoo-user@gentoo.org mailing list
Re: [gentoo-user] OT - Question about new bash [SOLVED]
First off.. OH! On 30/01/06, Alexander Skwar [EMAIL PROTECTED] wrote: znx wrote: No it can't be that, see the for before hand, that will separate at whitespace by defaultNo, it won't. Try it. True, ok so it did? and not now with bash3, I presume this is why it worked before and doesn't now? (unless you tamper with IFS), so the variable tested will be without whitespace, No, it won't. See above! I can only guess its a charset or similar that is causing the issue. I rather suppose, that he has filenames with spaces. Absolutely! Anyway, good to see that it sorted it, point for the future, quote your variables in [ ] 's :) Of course - ever and always quote variables, unless you can betotally certain about the contents. :P Alexander Skwar My apologies Alexander, I shall move my head into a bucket now for around 4 days. Thanks
[gentoo-user] OT - Question about new bash
I wrote a script a long time ago for resizing pictures uploaded to a certain directory on my server box. The script was supposed to check to see if any JPG files in the directory had not been resized, and if they hadn't, it was supposed to resize them. It did some other stuff, but that was the important thing. It worked fine until the recent bash upgrade and now it gives me an error. Here is the script: [EMAIL PROTECTED] ~ $ cat system/resizepics #!/bin/bash OLD_DIR=$PWD cd /home/michael/unfiledPics if [ ! -d current ]; then mkdir -p current/mini fi if [ ! `ls -l | wc -l` -le 2 ]; then for x in *.JPG; do if [ ! -e current/$x ]; then convert $x -thumbnail 200x200 -verbose current/mini/mini-$x convert $x -thumbnail 640x480 -verbose current/$x; fi done fi if [ `ls -l | wc -l` -ge 12 ]; then today=`date '+%m%d%y'` mv current $today mv $today /home/michael/webspace/html/camera mkdir -p /home/michael/unfiledPics/current/mini rm /home/michael/unfiledPics/*.JPG fi cd $OLD_DIR As I said, before the bash upgrade this worked perfectly. Now, when I try to run it, I get this: [EMAIL PROTECTED] ~ $ system/resizepics system/resizepics: line 11: [: too many arguments system/resizepics: line 11: [: too many arguments The error is printed twice because there are two .JPG being checked, but I'm not sure why the error is occurring in the first place. Line 11 says: if [ ! -e current/$x ]; then This used to mean if a file named current/whatever $x is does not exist, then execute the following block, but it keeps tripping on this line. Was the -e switch deprecated or something? What should it be? If it matters, my /bin/bash version is [EMAIL PROTECTED] ~ $ bash --version GNU bash, version 3.00.16(1)-release (i586-pc-linux-gnu) Copyright (C) 2004 Free Software Foundation, Inc. Please help! -- gentoo-user@gentoo.org mailing list
Re: [gentoo-user] OT - Question about new bash
Michael Sullivan wrote: I wrote a script a long time ago for resizing pictures uploaded to a certain directory on my server box. The script was supposed to check to see if any JPG files in the directory had not been resized, and if they hadn't, it was supposed to resize them. It did some other stuff, but that was the important thing. It worked fine until the recent bash upgrade and now it gives me an error. Here is the script: [EMAIL PROTECTED] ~ $ cat system/resizepics #!/bin/bash OLD_DIR=$PWD cd /home/michael/unfiledPics if [ ! -d current ]; then mkdir -p current/mini fi if [ ! `ls -l | wc -l` -le 2 ]; then for x in *.JPG; do if [ ! -e current/$x ]; then convert $x -thumbnail 200x200 -verbose current/mini/mini-$x convert $x -thumbnail 640x480 -verbose current/$x; fi done fi if [ `ls -l | wc -l` -ge 12 ]; then today=`date '+%m%d%y'` mv current $today mv $today /home/michael/webspace/html/camera mkdir -p /home/michael/unfiledPics/current/mini rm /home/michael/unfiledPics/*.JPG fi cd $OLD_DIR As I said, before the bash upgrade this worked perfectly. Now, when I try to run it, I get this: [EMAIL PROTECTED] ~ $ system/resizepics system/resizepics: line 11: [: too many arguments system/resizepics: line 11: [: too many arguments The error is printed twice because there are two .JPG being checked, but I'm not sure why the error is occurring in the first place. Line 11 says: if [ ! -e current/$x ]; then This used to mean if a file named current/whatever $x is does not exist, then execute the following block, but it keeps tripping on this line. Was the -e switch deprecated or something? What should it be? If it matters, my /bin/bash version is [EMAIL PROTECTED] ~ $ bash --version GNU bash, version 3.00.16(1)-release (i586-pc-linux-gnu) Copyright (C) 2004 Free Software Foundation, Inc. Please help! I'm not sure myself, but a better place to ask might be freenode's #bash ;) Good luck -- gentoo-user@gentoo.org mailing list
Re: [gentoo-user] OT - Question about new bash
Hi, for x in *.JPG; doif [ ! -e current/$x ]; then I can't see anything wrong with this in particular, one thing that springs to mind is to quote the string that you are testing: for x in *.JPG; do if [ ! -e current/$x ]; then Hope that helps
Re: [gentoo-user] OT - Question about new bash [SOLVED]
On Sun, 2006-01-29 at 18:05 +, znx wrote: Hi, for x in *.JPG; do if [ ! -e current/$x ]; then I can't see anything wrong with this in particular, one thing that springs to mind is to quote the string that you are testing: for x in *.JPG; do if [ ! -e current/$x ]; then Hope that helps Yep, that worked! Thanks! Hmm, I wonder why it worked before? -- gentoo-user@gentoo.org mailing list
Re: [gentoo-user] OT - Question about new bash
Michael Sullivan wrote: As I said, before the bash upgrade this worked perfectly. Now, when I try to run it, I get this: [EMAIL PROTECTED] ~ $ system/resizepics system/resizepics: line 11: [: too many arguments system/resizepics: line 11: [: too many arguments I don't get this error, when I run your script. How are the files named? Do they have spaces in the file name? If so - and even if not - I'd *STRONGLY* suggest to enclose current/$x in quotes, like so: if [ ! -e current/$x ]; then Alexander Skwar -- R Tape loading error, 0:1 -- gentoo-user@gentoo.org mailing list
Re: [gentoo-user] OT - Question about new bash [SOLVED]
Michael Sullivan wrote: for x in *.JPG; do if [ ! -e current/$x ]; then Hope that helps Yep, that worked! Thanks! Hmm, I wonder why it worked before? Perhaps you got some file named: hey I am a long file name with spaces.jpg ;) -- Norberto Bensa Ciudad de Buenos Aires, Argentina -- gentoo-user@gentoo.org mailing list