First: me == noob. Whats a good resource for shell script info cause I'm having trouble finding good info.
I'm writing a shell script to automate the setup of a flash 'page flip'.
My current code is below.
the page flip takes an xml file of format
<content>
<pages src="/path/to/image.jpg" preload="true"></pages>
etc
</content>
I want my shell script to:
- make folders ./xml and ./pages
- copy the jpegs to the "./pages/param2" folder
- Read a directory of jpegs (passed as param1)
- build the xml file listing the files SORTED!
(eg <page src="file1" preload="true"></page>
<page src="file2" preload="true"></page>...
<page src="file10" preload="false"></page>) - only set preload=true for the first X pages
- package ./pages and ./xml into a tar then transfer it to my web server
Some of the jpegs whose filenames need to be used in the xml file, have names like:
PrefixIndex.jpg
eg, where BRISGUIDE_JAN08 is the Prefix:
BRISGUIDE_JAN08.jpg
BRISGUIDE_JAN0802.jpg
BRISGUIDE_JAN0803.jpg
BRISGUIDE_JAN0804.jpg
etc
So to get it to sort properly in the xml file(eg 2.jpg comes after 1.jpg, not after 10.jpg), i was pulling the BRISGUIDE_JAN08 off and using sort -n to arrange them by their Index.
but then I end up with a file called .jpg cause the first file doesn't have an index...
so i thought I'd add a 0 to the start of the file. This is fine, a little ugly but the question is:
maybe there is a way to get the sort command to sort a list like:
page.jpg
page1.jpg
page10.jpg
page2.jpg
page3.jpg
into
page0.jpg
page1.jpg
page2.jpg
page3.jpg
page10.jpg
I guess I could just add the prefix back on to the file after I've written the xml file in numeric order....
PLUS I can't get the counting variables working for the preload up to X working.
Is there an alternative to environment variables for counting in shell scripts?
Maybe this would be better in a different shell? CSH?
Thanks!
#!/bin/sh
if [ $# -ne 3 ]; then
echo;
echo Usage: $0 source_jpegs_folder name [prefix_to_remove]
echo EXAMPLE: $0 ./jpegs 01_2008_SEQ BRISGUIDE_JAN08
echo;
exit 127
fi
automator_path=/YYY/Projects/Pageflip/ag_automator; export automator_path;
ag_id=$2; export ag_id;
number_to_preload=6; export number_to_preload;
ag_counter=0; export ag_counter;
mkdir $automator_path/pages;
mkdir $automator_path/xml;
cd $1;
for each in *.jpg; do
cp "$each" $automator_path/pages/$(echo $each|sed "s/ /_/g")
done
echo "<content width=\"283\" height=\"595\" hcover=\"false\" transparency=\"true\">" > $automator_path/xml/$ag_id.xml
cd $automator_path/pages/
mkdir $automator_path/pages/$2;
for f in *.jpg; do
mv $f $automator_path/pages/$ag_id/
done
cd $automator_path;
cd pages/$ag_id;
for h in *.jpg; do
mv $h 0${h#$3};
done
for f in `ls *.jpg | sort -n`; do
if [ $ag_counter -lt $number_to_preload ]; then
echo "<page src=\"/pages/$2/0$f\" onLoad=\"true\" ></page>" >> $automator_path/xml/${ag_id}.xml
else
echo "<page src=\"/pages/$2/0$f\" onLoad=\"false\" ></page>" >> $automator_path/xml/${ag_id}.xml
fi
"$ag_counter" = "$ag_counter"+1;
export "$ag_counter";
done
echo "</content>" >> $automator_path/xml/$ag_id.xml;
cd $automator_path
tar -cvzf $ag_id.tar.gz xml/$ag_id.xml pages/$ag_id;
scp ./$ag_id.tar.gz admin@XXX.com:~/vhosts/XXX.com/httpdocs/work;
wait;