[SOLVED] Code does not run when assigned to a variable


 
Thread Tools Search this Thread
Top Forums UNIX for Advanced & Expert Users [SOLVED] Code does not run when assigned to a variable
# 1  
Old 11-30-2012
[SOLVED] Code does not run when assigned to a variable

I am more of a newbie, but wanted to post this in this forum as I was afraid no one would look at it in unix forums as it concerns shell scripting. I have a shell script that now runs fine with the exclusion of one line:

x=`su nbadmin -c "ssh -t servery /usr/openv/netbackup/bin/bplist -C servery -t 19 -l -R -s 11/01/2012 -e 11/01/2012 /vol/root/"`;echo "$x"This command will run and ssh to the server. It prints out /vol/root after it sshs to servery. However, it does not print out a list of the contents of /vol/root. However, if I run the command WITHOUT assigning it to a variable, like this:

su nbadmin -c "ssh -t servery /usr/openv/netbackup/bin/bplist -C servery -t 19 -l -R -s 11/01/2012 -e 11/01/2012 /vol/root/"It runs and prints all the directories under root. What is it about this command that you cannot assign it to a variable and it won't print out the contents? The bplist -l -R options are supposed to do that and they do so long as I do not assign the command to a variable and echo it.

Any help would be welcome from you gurus!
# 2  
Old 11-30-2012
Not sure what OS or shell you're using but the output might be a bit much for a normal variable. Instead, you could try storing the returned output in an array:

Code:
declare -a array=( $(su nbadmin -c "ssh -t servery /usr/openv/netbackup/bin/bplist -C servery -t 19 -l -R -s 11/01/2012 -e 11/01/2012 /vol/root/") )

Then iterate the array to display the results:

for (( i = 0; i < ${#array[@]}; i++ ))
do
    echo ${array[$i]}
done

# 3  
Old 11-30-2012
This is the bash root shell. I have tried to just echo an array, and it completes successfully but then still gives the same input as before. I am also not able to make the for loop work, see below. This is probably because I do not have much experience with arrays. But the basic echo array returns the /vol/root without any subdirectories. Maybe I am not making the loop for the iteration correctly.

Basic echo array:

Code:
declare -a array=( $(su nbadmin -c "ssh -t servery /usr/openv/netbackup/bin/bplist -C servery -t 19 -l -R -s 11/01/20
12 -e 11/01/2012 -e 11/01/2012 /vol/root/") )
echo ${array[$i]}

this gives errors:
Code:
declare -a array=( $(su nbadmin -c "ssh -t servery /usr/openv/netbackup/bin/bplist -C servery -t 19 -l -R -s 11/01/2012 -e 11/0
12 -e 11/01/2012 -e 11/01/2012 /vol/root/") )
for (( i = 0; i < ${#array[@]}; i++ ))
do
 echo ${array[$i]}
done

Errors:
+ declare -a 'array=( drwxr-xr-x root root 4096 May 25 2012 /vol/root/ )'
testing_1130: line 2: syntax error near unexpected token `(('
testing_1130: line 2: `for (( i = 0; i < ${#array[@]}; i++ ))'

Again, any help you gurus have is always appreciated.

Last edited by joeyg; 11-30-2012 at 03:20 PM.. Reason: Please wrap data and sripts with CodeTags
# 4  
Old 11-30-2012
That is a very big and complicated command. I would try and unwrap that a little, not jam everything on one line.

Also, you can't jam multiple lines of text in a variable and expect them to work right. Quoting them is a bit of a hassle. Save it in a file instead -- that makes it easy to use in a loop or transfer into anything else.

Try this command:

Code:
su nbadmin -c "ssh -t servery exec /bin/sh -s" > /tmp/$$ <<EOF
/usr/openv/netbackup/bin/bplist -C servery -t 19 -l -R -s 11/01/2012 -e 11/01/2012 /vol/root
EOF

echo "Contents of /vol/root"
cat /tmp/$$

rm -f /tmp/$$

# 5  
Old 11-30-2012
This worked!

Corona:

Thanks for all the help! This worked! I did not realize about the line length and a lot of my scripts work but the lines are too long as you said. I only had one more question, I am trying to assign it to the nbadmin command to a variable as this script actually asks for user input. So actually it was

echo -e "do you want to run this command?"
read runthiscommand
runthiscommand=` su nbadmin -c "ssh -t severy /usr/openv/netbackup/bin/bplist -C servery 5 -t 19 -l -R -s 11/01/2012 -e 11/01/2012 /vol/root/"`;echo "$runthiscommand"I will check what you wrote and see if I can incorporate it to the user input part of the script... If any more suggestions, appreciate it!Smilie This forum is very friendly to newbies!
# 6  
Old 11-30-2012
I have no idea what you are even trying to do there. You read the variable, then immediately overwrite it with something else without using it for anything. What is the intent?
# 7  
Old 11-30-2012
I got this working for my user input script and am very happy! Thanks to all who helped!Smilie
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Perl multiple qr assigned to variable

Experts, I'm having problems with the code below. I'm trying to test $var2 for two different regexs. I thought it could be done per below, but I'm getting the following error when running. $ ./test.pl b fed50c0100**** Unescaped left brace in regex is deprecated, passed through in regex; marked... (2 Replies)
Discussion started by: timj123
2 Replies

2. Shell Programming and Scripting

Eval and get awk output assigned to variable

I want to do 2 things in single line that is evaluating a command to get return code and store $2 of awk if the command exit code is 0. eval "ade desc ${filename}@@/<branch_name> | grep Version | awk '{print $2}' 2>&1 1>/dev/null" ret=$? echo "$ret $val" if then ... (3 Replies)
Discussion started by: ezee
3 Replies

3. UNIX for Dummies Questions & Answers

[Solved] Why code run not correctly

Hi there can anyone help me here is my code echo "Type in a positive number" read X I=2 while do if then echo "It is not prime" break else if then echo "It is prime" break else I=$(( $I + 1)) fi fi (4 Replies)
Discussion started by: FUTURE_EINSTEIN
4 Replies

4. UNIX for Dummies Questions & Answers

How do you check if a variable has been assigned?

I am trying to check whether a variable has been assigned on the command line or not. Here is what I did: #!/usr/bin/bash if( $variable == '\0') { print "variable was not assigned" exit } else NF = 2 {print $1, ""} exit fi awk -f question1.awk variable = 58 letters.txt. So... (3 Replies)
Discussion started by: Fred63528
3 Replies

5. Shell Programming and Scripting

How to split a data assigned to a variable

The requirement is, there is a log file which contains a huge data. i need to get a particular field out of it by searching with another field. ex: 2011-03-28 13:00:07,423 : millis=231 q={ call get_data_account(?,?,?,?,?) }, params= i need to search for the word "get_data_account" in file... (1 Reply)
Discussion started by: Jassz
1 Replies

6. Shell Programming and Scripting

[Bash] Variable won't get assigned value

I am making of a script that will go through a couple of for loops and create file names based on the values in that loop, however the variable that combines everything is not getting assigned properly: #! /bin/bash for imod in K33_j1b_WS9_6 do for emod in mb2A mb2C mb3A mb3C mb4A... (1 Reply)
Discussion started by: badinsults
1 Replies

7. Shell Programming and Scripting

Missing Assigned Variable within logic operator

Hey , I'm trying to perform the following command, however it cannot read the variable assigned earlier. I'm not sure why this happen. Please help thanks while : do echo "what's ur name? (if none just press )" read name changeName = echo $name | sed "s/on/ey/" echo $changeName #this... (8 Replies)
Discussion started by: sexyTrojan
8 Replies

8. Shell Programming and Scripting

Check if a variable has a value assigned?

Hi, I want to check if a variable has a value assigned to it or not. I can do following - cat $Var > File1 if then echo "$Var has value" else echo "$Var is null" fi But I have to check for 3 Variables and I want to wrap it up in couple of unix statements. Any... (3 Replies)
Discussion started by: sumeet
3 Replies

9. Shell Programming and Scripting

Return code of command assigned to variable

How do I evaluate the result of a command assigned to a variable?? Example: var1=`cmd` rc=$? rc will be the result of the assignment rather than cmd since it executes after. How do I evaluate the result of the command itself? Cheers..:confused: (2 Replies)
Discussion started by: browndr
2 Replies

10. UNIX for Dummies Questions & Answers

What does $? mean when assigned to a variable?

If i write this statement in a Korn Shell script RCODE=$? what possibly does it eman? (3 Replies)
Discussion started by: ranjita.c
3 Replies
Login or Register to Ask a Question