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
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.