Shell script worked correctly until I added variable :(


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Shell script worked correctly until I added variable :(
# 15  
Old 01-22-2015
Are #! the first two characters of the file? No space before it or a line before it? What does ls -l /bin/*sh give ?
What happens when you call it like sudo /bin/bash ./ip full
# 16  
Old 01-22-2015
Quote:
Originally Posted by Scrutinizer
Are #! the first two characters of the file? No space before it or a line before it?
Hmmmmm, there is a space before the #!

Quote:
Originally Posted by Scrutinizer
Are #!What does ls -l /bin/*sh give ?
-rwxr-xr-x 1 root root 813992 Sep 26 06:55 /bin/bash
-rwxr-xr-x 1 root root 88340 Mar 30 2012 /bin/dash
lrwxrwxrwx 1 root root 4 Sep 26 06:55 /bin/rbash -> bash
lrwxrwxrwx 1 root root 4 Mar 30 2012 /bin/sh -> dash

Quote:
Originally Posted by Scrutinizer
What happens when you call it like sudo /bin/bash ./ip full
./ip: line 7: [: =: unary operator expected
./ip: line 17: [: =: unary operator expected

Different error. Is that space before the #! an issue? I love learning new stuff!
# 17  
Old 01-22-2015
Quote:
Originally Posted by gjws
Hmmmmm, there is a space before the #!



-rwxr-xr-x 1 root root 813992 Sep 26 06:55 /bin/bash
-rwxr-xr-x 1 root root 88340 Mar 30 2012 /bin/dash
lrwxrwxrwx 1 root root 4 Sep 26 06:55 /bin/rbash -> bash
lrwxrwxrwx 1 root root 4 Mar 30 2012 /bin/sh -> dash



./ip: line 7: [: =: unary operator expected
./ip: line 17: [: =: unary operator expected

Different error. Is that space before the #! an issue? I love learning new stuff!
That is the exact problem! The #! needs to be the exact first two characters. Otherwise it is a comment and it gets ignored...
So therefore the default shell got called instead which is /bin/sh which points to dash.
This User Gave Thanks to Scrutinizer For This Post:
# 18  
Old 01-22-2015
Quote:
Originally Posted by Scrutinizer
That is the exact problem! The #! needs to be the exact first two characters. Otherwise it is a comment and it gets ignored...
As I said, it's great to learn new things Smilie

Thank you, the script now runs without errors, and even better, I understand why!
This User Gave Thanks to gjws For This Post:
# 19  
Old 01-24-2015
If using = operator in test command, then you need value before it and after it.
If $1 is empty then you have nothing. => test cmd syntax error.
But "$1" is always something, sometimes string which length is 0.

Code:
# ex. make next change and no problem in syntax
#  if [[ $1 = "full" ]]
# =>
if [ "$1" = "full" ]

# 20  
Old 01-24-2015
Quote:
Originally Posted by kshji
If using = operator in test command, then you need value before it and after it.
If $1 is empty then you have nothing. => test cmd syntax error.
But "$1" is always something, sometimes string which length is 0.

Code:
# ex. make next change and no problem in syntax
#  if [[ $1 = "full" ]]
# =>
if [ "$1" = "full" ]

Not only that, but if $1 is left unquoted in the test command [ ... ], it will be subjected to field splitting and pathname expansion by the shell.
When using the double bracket bash/ksh/zsh shell grammar [[ ... ]], this will not be done...
# 21  
Old 01-24-2015
Quote:
Originally Posted by kshji
If using = operator in test command, then you need value before it and after it.
If $1 is empty then you have nothing. => test cmd syntax error.
But "$1" is always something, sometimes string which length is 0.

Code:
# ex. make next change and no problem in syntax
#  if [[ $1 = "full" ]]
# =>
if [ "$1" = "full" ]

Thank you, it's good to know the best practice. It's interesting that there is an error when using DASH, but no error when using BASH.

I wonder why systems don't link /bin/sh to BASH rather than DASH by default if BASH is a better shell?
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

How can I assign awk's variable to shell script's variable?

I have the following script, and I want to assign the output ($10 and $5) from awk to N and L: grdinfo data.grd | awk '{print $10,$5}'| read N L output from gridinfo data.grd is: data.grd 50 100 41 82 -2796 6944 0.016 0.016 3001 2461. where N and L is suppose to be 3001 and 100. I use... (8 Replies)
Discussion started by: geomarine
8 Replies

2. UNIX for Dummies Questions & Answers

Validation to be added in the shell script

I need help with one of my shell script. The script is working fine but i need to add two condition - i need to get rid of all the below ftp messages and need to have only ftp completed or failed message. example when i run the script i get below lines - Connected to xxxx 220 (vsFTPd... (1 Reply)
Discussion started by: chandraprakash
1 Replies

3. Shell Programming and Scripting

Unable to pass shell script variable to awk command in same shell script

I have a shell script (.sh) and I want to pass a parameter value to the awk command but I am getting exception, please assist. diff=$1$2.diff id=$2 new=new_$diff echo "My id is $1" echo "I want to sync for user account $id" ##awk command I am using is as below cat $diff | awk... (2 Replies)
Discussion started by: Ashunayak
2 Replies

4. Shell Programming and Scripting

Shell $,/r getting added in echo on variable substitution.

Hi All, I'm trying to run a similar script to copy a files from one location to another. #!/bin/bash source="/home/pradeepk/a.txt" destination="/home/pradeepk/dir1" cp $source $destinationi'm getting following error. cp: cannot stat `/home/pradeepk/a.txt\r': No such file or directorywhen... (1 Reply)
Discussion started by: pradeep2002gs
1 Replies

5. Shell Programming and Scripting

CRON shell script only runs correctly on command line

Hi, I'm new to these forums, and I'm hoping that someone can solve this problem... To make things short: I have DD-wrt set up on a router. I'm trying to run a script in CRON that fetches the daily password from my database using SSH. CRON is set like so(in web interface): * * * *... (4 Replies)
Discussion started by: louieaw
4 Replies

6. Shell Programming and Scripting

Result of the grep is not storred correctly into the variable

I am facing a problem while storring the grep results into a variable. I need to count the occurence of the pattern \, in a file and store that in a variable. I have given the below command p=`grep -c '\\,' filename` But while echoing the variable, i am getting the total number of lines in... (2 Replies)
Discussion started by: renjithv
2 Replies

7. Shell Programming and Scripting

assign awk's variable to shell script's variable?

Dear All, we have a command output which looks like : Total 200 queues in 30000 Kbytes and we're going to get "200" and "30000" for further process. currently, i'm using : numA=echo $OUTPUT | awk '{print $2}' numB=echo $OUTPUT | awk '{print $5}' my question is : can I use just one... (4 Replies)
Discussion started by: tiger2000
4 Replies

8. Shell Programming and Scripting

Shell script not unzipping and copying correctly

Hi, I am trying to unzip a file( $pfile, it contains a couple of files and 4 folders with subfolders and files) and have its contents go into a directory instead of into a folder in that directory (ZZZZ), I have the following script: #Unzip the build unzip -o "$HOME/ZZZZ/$pfile" -d... (2 Replies)
Discussion started by: SlumberMachine
2 Replies

9. Shell Programming and Scripting

Variable not working correctly.

Hi, I have a script where I am trying to set a local variable using the following, MYVAR="$NAME"_"$NAME2".txt where say, NAME = one NAME2 = two so I want the output one_two.txt but what I am getting is, two.txt basically the $NAME2 is overwriting, what am I doing wrong? ... (3 Replies)
Discussion started by: walsh_j
3 Replies

10. Shell Programming and Scripting

Variable with $ do not show correctly

Hey guys i need help i have a script to push a password to a remote server the only problem is the $ENCRYPT variable has $'s in it (from the encrypted password in the shadow file) and they drop out when apending to the shadow file via the usermod command so $1$Q/6a08n$EoAcBuR/YnoCQC shows up as... (3 Replies)
Discussion started by: insania
3 Replies
Login or Register to Ask a Question