Skip to main content
added 875 characters in body
Source Link
slm
  • 379.7k
  • 127
  • 793
  • 897

IfIn your example, your confusing shell scripting commands. You have to pay special attention to which scripting language you're using and then adhere to its commands' syntax. In your example you're using turbo C shell (tcsh) youhowever you're then mixing in Bash/Bourne shell commands and syntaxes.

You can use the following approach if you truly want tcsh. Say I had this sample file:

$ cat afile 
1
2
3
4
5

And this script:

$ cat cmd.csh 
#!/bin/tcsh

foreach i (`cat afile`) 
  echo "$i" 
end

Running it will produce this output:

$ ./cmd.csh
1
2
3
4
5

So to complete the task, we can add in the mkdir command after the echo:

$ cat cmd1.csh 
#!/bin/tcsh

foreach i (`cat afile`) 
  echo "making directory: $i" 
  mkdir "$i"
end

Now when we run it:

$ ./cmd1.csh 
making directory: 1
making directory: 2
making directory: 3
making directory: 4
making directory: 5

Resulting in the directories getting created:

$ ls -l
total 32
drwxrwxr-x. 2 saml saml 4096 Oct 16 18:58 1
drwxrwxr-x. 2 saml saml 4096 Oct 16 18:58 2
drwxrwxr-x. 2 saml saml 4096 Oct 16 18:58 3
drwxrwxr-x. 2 saml saml 4096 Oct 16 18:58 4
drwxrwxr-x. 2 saml saml 4096 Oct 16 18:58 5
-rw-rw-r--. 1 saml saml   11 Oct 16 18:47 afile
-rwxrwxr-x. 1 saml saml   86 Oct 16 18:56 cmd1.csh
-rwxrwxr-x. 1 saml saml   55 Oct 16 18:51 cmd.csh

If you're using turbo C shell (tcsh) you can use the following approach. Say I had this sample file:

$ cat afile 
1
2
3
4
5

And this script:

$ cat cmd.csh 
#!/bin/tcsh

foreach i (`cat afile`) 
  echo "$i" 
end

Running it will produce this output:

$ ./cmd.csh
1
2
3
4
5

In your example, your confusing shell scripting commands. You have to pay special attention to which scripting language you're using and then adhere to its commands' syntax. In your example you're using turbo C shell (tcsh) however you're then mixing in Bash/Bourne shell commands and syntaxes.

You can use the following approach if you truly want tcsh. Say I had this sample file:

$ cat afile 
1
2
3
4
5

And this script:

$ cat cmd.csh 
#!/bin/tcsh

foreach i (`cat afile`) 
  echo "$i" 
end

Running it will produce this output:

$ ./cmd.csh
1
2
3
4
5

So to complete the task, we can add in the mkdir command after the echo:

$ cat cmd1.csh 
#!/bin/tcsh

foreach i (`cat afile`) 
  echo "making directory: $i" 
  mkdir "$i"
end

Now when we run it:

$ ./cmd1.csh 
making directory: 1
making directory: 2
making directory: 3
making directory: 4
making directory: 5

Resulting in the directories getting created:

$ ls -l
total 32
drwxrwxr-x. 2 saml saml 4096 Oct 16 18:58 1
drwxrwxr-x. 2 saml saml 4096 Oct 16 18:58 2
drwxrwxr-x. 2 saml saml 4096 Oct 16 18:58 3
drwxrwxr-x. 2 saml saml 4096 Oct 16 18:58 4
drwxrwxr-x. 2 saml saml 4096 Oct 16 18:58 5
-rw-rw-r--. 1 saml saml   11 Oct 16 18:47 afile
-rwxrwxr-x. 1 saml saml   86 Oct 16 18:56 cmd1.csh
-rwxrwxr-x. 1 saml saml   55 Oct 16 18:51 cmd.csh
Source Link
slm
  • 379.7k
  • 127
  • 793
  • 897

If you're using turbo C shell (tcsh) you can use the following approach. Say I had this sample file:

$ cat afile 
1
2
3
4
5

And this script:

$ cat cmd.csh 
#!/bin/tcsh

foreach i (`cat afile`) 
  echo "$i" 
end

Running it will produce this output:

$ ./cmd.csh
1
2
3
4
5