steve@tellab3.UUCP (Steve Harpster) (06/11/84)
Quite often someone here will execute a C-shell script and will get the error ioctl: Operation not supported on socket This appears to come from the csh spawned to execute the script. The scripts which cause it simply copy files, change modes and the like; nothing that would involve sockets. Anyone out there know where this message is coming from? I've been searching with no luck so far. Many thanks..... ihnp4!tellab1!steve Steve Harpster
crp@ccivax.UUCP (Chuck Privitera) (06/12/84)
I have seen some very bizarre things happen in C-shell scripts due to a bug in parsing if statements. In the manual it outlines the syntax of if to be: if(expr) command or if(expr) then ... else if(expr2) then ... else ... endif Notice that the example shows no space between the if and the opening paren. Now, in C, bc, awk, etc., a space between if and the opening paren is optional, in the C-shell, if you don't have a space there nested ifs break. Here is an example that shows the problem: #!/bin/csh -f if ( $?a ) then echo the variable a is set if( $?b ) then echo the variable b is set else if ( $?c ) then echo the variable c is set else echo a is set but b nor c are. endif else echo a is not even set endif If you run this without setting a variable a or b or c, the output will be "a is set but b nor c are." . The first if is matching the first else! The problem is that the second if, i.e. if( $?b ), needs a space between if and the left paren. Obvious isn't it!!! I haven't bothered to chase the problem down I don't usually write shell scripts in C-shell. I think I first ran into this in my .cshrc file. Anyways, C-shell programmers beware this one. Chuck Privitera, Computer Consoles Inc. {allegra,seismo}!rochester!ritcv!ccivax!crp