Some shell scripts; a more elegant approach?

Kyrre Nygard kyrreny at broadpark.no
Tue May 16 01:58:49 PDT 2006


Hello!

I have a bash script here to clean .txt files.

But I want to incorporate a feature where, if the .txt file is
less than 300 bytes, it will echo "$file: Corrupt".

I'm very new to scripting, but I know that this method is not really nice:

--

for file in `find -s . -type f -name "*.txt"`; do

	mv -f $file $file.tmp

	tr -d '\r' < $file | cat -s | sed -E -e 's/[[:space:]]+$//' > $file.tmp

	echo > blank
	echo >> $file.tmp

	cat blank $file.tmp >> $file

	rm -f blank $file.tmp

done

for file in `find . -type f -name "*.txt" -size -300c`; do

	echo "$file: Corrupt"

done

--

I also have another script here that I'm wondering some about:

--

echo "Giving files to user $1, group $2."

	chown -R $1:$2 *

echo "Setting files to $3, folders to $4."

	find -s . -type f -exec chmod $3 '{}' \;
	find -s . -type d -exec chmod $4 '{}' \;

--

It mass sets permissions and ownerships.

In it, I have to specify $1, $2, $3 and $4. If I just specify let's say
$1 and $2, it will error out because the finds in $3 and $4 aren't 
given anything.

How do I avoid this?

Thanks people, I apologize for my ignorance,

-- Kyrre



More information about the freebsd-questions mailing list