[prog] bash script
Wolf Rising
wolfrising at gmail.com
Sat Jan 22 16:18:40 UTC 2011
Hi, Thank you for the assistance.
I finally realized I was using sed incorrectly and got the script to work
using grep instead :-)
Thanks!
On Sat, Jan 22, 2011 at 10:02 AM, Jacinta Richardson <
jarich at perltraining.com.au> wrote:
> Wolf Rising wrote:
>
>> Would anyone happen to see the syntax error in this code snippet?
>>
>> #push information to a file for sed to read
>> ls -l /$directory > /tmp/file
>>
>> #create file variable
>> file="/tmp/file"
>>
>> case $var in
>> 1) echo "These are regular files:"
>> sed -n '/^-/p' $file
>> if [ "sed -n '/^!-/p' $file" ];
>> then
>> echo "No items found which match your criteria."
>> fi
>> ;;
>>
>>
>>
>> It's a little bash script that checks file types by the first character, I
>> wanted to add an if clause but I
>> seem to have an error [ "sed -n '/^!-/p' $file" ] as it skips over this an
>> prints the echo statement
>> whether the file type is found or not.
>>
>
> Unfortunately I don't have any experience with sed's regular expressions,
> nor do I quite remember the syntax for case in bash. I'm wondering if your
> code is happening outside the case statement and that you only think it's
> happening in the right place due to erroneous indentation.
>
> If you're doing this for the sake of playing with sed, and bash, please
> ignore the next section.
>
> I find Perl to be an excellent tool for this kind of problem. So I'd
> write:
>
> #!/usr/bin/perl
> use strict;
> use warnings;
> use autodie;
>
> my $directory = "/tmp";
>
> # get filenames from the directory (use glob("$directory/* $directory/.*)
> to
> # include . files.
>
> while(my $file = glob("$directory/*")) {
>
> # skip over directories and other non-files
> next unless -f $file;
>
> # open file for reading
> open(my $fh, "<", $file);
>
> # read in first line from file
> my $firstline = <$fh>;
>
> # if the firstline starts with a -, print it out
> # else say it didn't match
>
> if( $firstline =~ /^-/ ) {
> print "$file\n";
> }
> else {
> print "$file does not start with a '-'\n";
> }
> }
>
>
> I'm fairly sure that does the same thing that you want your snippet to.
>
> All the best,
>
> Jacinta
>
More information about the Programming
mailing list