end of line error

Use and complete the template provided. The entire template must be completed. If you don't, your post may be deleted!

  1. The problem statement, all variables and given/known data:
#/bin/sh -xv
#Author: Lauren Buecker
#Date: September 28 2012
#Class COP3353
#Assignment: Assignment 4
echo "There are "$#" pamaters"
if ($# ! = 1) then
echo " Error No Paramaters Passed"
exit
endif
  1. Relevant commands, code, scripts, algorithms:

if statement

  1. The attempts at a solution (include all code and scripts):

When I delete the if statement it works fine

  1. Complete Name of School (University), City (State), Country, Name of Professor, and Course Number (Link to Course):

Florida State University, Tallahassee Fl USA David Gaitros COP3353

Note: Without school/professor/course information, you will be banned if you post here! You must complete the entire template (not just parts of it).

This looks sort of like a csh script, but if/then in sh doesn't work quite that way. It uses -eq, -ne, and so forth to compare numbers. =, != are used to compare strings.

There must be spaces between the brackets and whatever is inside -- and outside -- them. sh uses single square brackets, or double square brackets, not single round brackets.

You have to put a then after if.

You end the if-statement with fi, not endif.

You probably want less-than, rather than equal or not-equal, since it's possible for there to be one or more arguments, not just one. less-than is abbreviated into -lt .

if [ "$#" -lt 1 ]
then
        echo " Error No Parameters Passed"
        exit
fi

See Test Operators for what else you can do inside [ ] .

So if i got that straight the first one i wrote was something that csh would be able to run?

The assignment does no say it has to be sh or csh but I have to ask for and the parameter, check to see if that is a directory and then see how many directories their are, files with read permission, files with write permission and files with execute permissions are.

when I try and put the other if statement to see if it was a directory it says to many arguments

if [ "$#" ! -d]

if [ "$#" ! -d]

also I did this

if [ $#" -d == "public_html" ]

same error

I'm not very proficient with c-shell. It looks like something from csh, though.

If you're not sure whether you're supposed to be learning csh or sh, you better find out fast, since they're nothing alike. Hopefully sh, since csh is to be avoided.

I would always reccomend sh over csh.

You made a syntax error there: -d] should be -d ] because as explained above, the brackets must have spaces between them and everything else.

I'm not sure why you're using $# there or what you're expecting it to do; $# is a special variable which means 'the number of arguments'. If you want the first argument, that's $1. $2 is the second, etc.

if [ -d "$1" ]
then
        echo "$1 is a folder"
fi

Note the double-quotes around $1. This will prevent $1 from splitting into multiple strings if it happens to have a space in it.

I fixed the second if statement to read

if [ ! -d  "$1" ] 
then
        echo "Not a directory"
        exit
fi

but all directories parameters say it is not a directory.

after i save the file and input in to the command line
sh assignment4.sh public_html or sh assignment4.sh COP3353-temp which are all directories

buecker@shell:~/COP3353-temp>sh assignment4.sh public_html
Not a directory
buecker@shell:~/COP3353-temp>sh assignment4.sh COP3353-temp
Not a directory

---------- Post updated at 02:59 PM ---------- Previous update was at 02:55 PM ----------

ok i fixed the one one problem with passing in the paramater for the folder i was already in. but not the home directory

---------- Post updated at 03:12 PM ---------- Previous update was at 02:59 PM ----------

cd $1
set numdir = 0
set files = 0
set readfiles = 0
set writefiles = 0
set executefiles = 0
foreach  files [ * ]
echo "$files"   
end

for was a command not found, foreach is a command not found the instructor is showing us how to do it in a shell we are not supposed to use.

assignment4.sh: line 23: foreach: command not found

assignment4.sh: line 25: end: command not found
buecker@shell:~>

Sorry for missing this thread.

foreach is not a shell statement, you'd just use for.

for X in *
do
        echo "file is $X"
done

(foreach is definitely cshell syntax and only cshell or assimilated... (hehe poor guy...))

In shell scripting
the end an if,
use: fi