Getting input and changing variable?


 
Thread Tools Search this Thread
Top Forums UNIX for Dummies Questions & Answers Getting input and changing variable?
# 1  
Old 11-16-2013
Getting input and changing variable?

Hi I am new to scripting and have a function in my .sh script file that outputs a html radio button form

Code:
weather_forecast_config()
{
	echo ""
echo "<html><head><title>Welcome</title></head>"
echo "<body>"
echo "<h2>Weather Forecast - Change City</h2>"
echo "<form name="input" action="startPage.html" method="get">"
echo "<input type="radio" name="$cityconfig" value="$MUMBAI" >Mumbai<br>"
echo "<input type="radio" name="$cityconfig" value="$LONDON" >London"
echo "<input type="submit" value="Submit">"
echo "</form>"
echo "</body></html>"

if [ $cityconfig = "$MUMBAI" ]; then
               echo $WEATHERCONF ="204842"
               elif [ $cityconfig  = "$LONDON" ]; then
               echo $WEATHERCONF = "328328"
            fi
}

What I want the code to do is if the london radio button is selected and submitted this changes the $WEATHERCONF value to 328328, the $weatherconf is on another script whiich is output as startPage.html. The $weatherconf is in the code:

Code:
weather_forecast()
{
	

echo ""
echo "<html><head><title>Welcome</title></head>"
echo "<body>"
echo "<h2>Weather Forecast</h2>"
 echo "<a href="http://www.accuweather.com/en/gb/leicester/le1-3/weather-forecast/$WEATHERCONF" class="aw-widget-legal">"
echo "</a><div id="awcc1384544545323" class="aw-widget-current"  data-locationkey="$WEATHERCONF" data-unit="c" data-language="en-gb" data-useip="false" data-uid="awcc1384544545323"></div><script type="text/javascript" src="http://oap.accuweather.com/launch.js"></script>"

echo "</body></html>"
}

any help would be appreciated thanks
# 2  
Old 11-16-2013
Try assigning value to variable this way and see if this is what you are trying to do:
Code:
if [ $cityconfig = "$MUMBAI" ]; then
  WEATHERCONF="204842"
elif [ $cityconfig  = "$LONDON" ]; then
  WEATHERCONF="328328"
fi

# 3  
Old 11-18-2013
Quote:
Originally Posted by spacebar
Try assigning value to variable this way and see if this is what you are trying to do:
Code:
if [ $cityconfig = "$MUMBAI" ]; then
  WEATHERCONF="204842"
elif [ $cityconfig  = "$LONDON" ]; then
  WEATHERCONF="328328"
fi

Thanks but no luck i tried:

In my config.sh file
Code:
cityconfig=""
CitySelect="LONDON"



##### Functions
weather_forecast_config()
{

	echo "cityconf = $cityconfig"
echo "<html><head><title>Welcome</title></head>"
echo "<body>"
echo "<h2>Weather Forecast - Change City</h2>"
echo "<form name="input" action="startPage.html" method="get">"
echo "<input type="radio" name="$CitySelect" value="MUMBAI" >Mumbai<br>"
echo "<input type="radio" name="$CitySelect" value="LONDON" >London"
echo "<input type="submit" value="Submit">"
echo  "<input type="reset" value="Reset!"><br>"
echo "</form>"
echo "</body></html>"

if [ $CitySelect = "MUMBAI" ]; then
  cityconfig="204842"
  echo "cityconfig is mumbai? = $cityconfig"
elif [ $CitySelect  = "LONDON" ]; then
  cityconfig="328328"
  echo "cityconfig is london? = $cityconfig"
fi


}

the output echos a statement and shows that the if statement is working but its not changing based on the form inout but the initial value I set? Any Help with the html form have I got the name and value wrong?

thanks

Last edited by scriptnewbie; 11-18-2013 at 02:18 PM..
# 4  
Old 11-18-2013
Nothing is going to automatically change the value of $CitySelect for you, CGI doesn't work that way. When the user makes a GET query, the entire string appears in ${QUERY_STRING}, which you can process as you please, deriving the value from it instead of setting it to LONDON.

Your script makes HTML like this:
Code:
<body>
<h2>Weather Forecast - Change City</h2>
<form name="input" action="startPage.html" method="get">
<input type="radio" name="LONDON" value="MUMBAI" >Mumbai<br>
<input type="radio" name="LONDON" value="LONDON" >London
<input type="submit" value="Submit">
<input type="reset" value="Reset!"><br>
</form>
</body></html>

...which I seriously doubt is what you want.

Last edited by Corona688; 11-18-2013 at 03:46 PM..
# 5  
Old 11-18-2013
Quote:
Originally Posted by Corona688
Nothing is going to automatically change the value of $CitySelect for you, CGI doesn't work that way. When the user makes a GET query, the entire string appears in ${QUERY_STRING}, which you can process as you please, deriving the value from it instead of setting it to LONDON.

Your script makes HTML like this:
Code:
<body>
<h2>Weather Forecast - Change City</h2>
<form name="input" action="startPage.html" method="get">
<input type="radio" name="LONDON" value="MUMBAI" >Mumbai<br>
<input type="radio" name="LONDON" value="LONDON" >London
<input type="submit" value="Submit">
<input type="reset" value="Reset!"><br>
</form>
</body></html>

...which I seriously doubt is what you want.
I basically want to update the variable in another script in the config script and send the amended value on submit to change the city. Would you suggest a different method or would this way work.

Another newbie question - do i just echo out ${QUERY_STRING} as written to output the get value/how exactly can you process this?
# 6  
Old 11-18-2013
Your other script has to process ${QUERY_STRING} and extract the variable from it. ${QUERY_STRING} will contain values like
Code:
VAR1=value1&VAR2=value2&VAR3=value3

just like you'd see appended to the end of the webpage.

I process it like this:

Code:
# Just an example/test, you should not set QUERY_STRING yourself
QUERY_STRING="a=b&c=d&g=h&i=j"

OLDIFS="$IFS"
IFS="&" # Split strings upon & instead of space
        set -- ${QUERY_STRING} # Set $1="a=b", $2="c=d", $3="g=h", $4="i=j"
        while [ "$#" -ne 0 ] # Loop until we're all out of $1 $2 $3 ...
        do
                IFS="=" read NAME VAL <<EOF
${1}
EOF
                IFS="=" read CGI_"$NAME" VAL <<EOF
${1}
EOF
                shift # Get rid of $1 so $1="c=d", $2="g=h", ...
        done

IFS="$OLDIFS" # Return to default splitting behavior

echo ${CGI_a}
echo ${CGI_c}
echo ${CGI_g}

You will end up with variables like CGI_a, CGI_c, CGI_g, and so forth. The CGI_ prefix is so that web users can't accidentally (or worse, maliciously) change important, special variables like PATH in your script... This way if someone tries, all they'll set is CGI_PATH.

All the read junk is just a tricky way of setting random variable names without resorting to eval. This prevents malicious web users from feeding `rm -Rf ~/ into your code...

Last edited by Corona688; 11-18-2013 at 04:31 PM..
 
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Advanced & Expert Users

Passing variable as input & storing output in other variable

I have a below syntax its working fine... var12=$(ps -ef | grep apache | awk '{print $2,$4}') Im getting expected output as below: printf "%b\n" "${VAR12}" dell 123 dell 456 dell 457 Now I wrote a while loop.. the output of VAR12 should be passed as input parameters to while loop and results... (5 Replies)
Discussion started by: sam@sam
5 Replies

2. UNIX for Dummies Questions & Answers

Changing Path Variable

Blank Blank Blank (11 Replies)
Discussion started by: pvibien
11 Replies

3. Shell Programming and Scripting

XML variable for input in same input file

Dear All , i stuck in one problem executing xml .. i have input xml as <COMMAND name="ARRANGEMENT.WRITE" timestamp="0" so="initial"> <SVLOBJECT> <LONG name="CSP_PMNT_ID" val="-1"/> <MONEY name="CSP_CEILING" amount="0.0" currency="AUD"/> ... (6 Replies)
Discussion started by: arvindng
6 Replies

4. Shell Programming and Scripting

Changing the variable using awk?

Dear all, I have kind of used both the awk/sed command and found them really useful. But at the necessity I am having right now, I need help. Actually, I would like to do the following in file script.sh PATH535="/eos/uscms/store/user/pooja04//analysis2012/535/mc/summer12/002/tt/" ... (2 Replies)
Discussion started by: emily
2 Replies

5. Shell Programming and Scripting

Input value changing into 0

Hi, I am getting a strange problem in my production environment. Line in input file: Code: while read myline do echo $myline >> /home/aauytrf/PARM_FILE_NM.bak fi done < /home/aauytrf/PARM_FILE_NM.prm Output: 0 Here the input line is becoming 0. This is not happening to... (11 Replies)
Discussion started by: niba
11 Replies

6. Shell Programming and Scripting

Changing variable name in for loop

Hi All please help if possible. I am a Unix novice. I have a similar question to the one posted by yonderboy at about a year ago. However his solution does not work for me. The pseudo code for my problem is as follows: for fund in 1 2 3 4 if (FTP is successfully) then FILE_SENT_fund... (2 Replies)
Discussion started by: Seether
2 Replies

7. Shell Programming and Scripting

Create Multiple files by reading a input file and changing the contents

Being new to this area .I have been assigned a task which i am unable to do . Can any one please help me . Hi I have requirement where i have input file XYZ_111_999_YYYYMMDD_1.TXT and with header and series of Numbers and Footer. I want to create a mutiple output files with each file having a... (2 Replies)
Discussion started by: bhargavkr
2 Replies

8. UNIX for Dummies Questions & Answers

send output of a file as input for changing date

Hi, Please help me out on this one. I want to send the output of a file as input for changing the date using date command. Example, i have a file date.txt whose contents are 081014462009 I need to use the date in that file as input for date command. I tried cat date.txt | date ; but it... (2 Replies)
Discussion started by: foxtron
2 Replies

9. Shell Programming and Scripting

IFS changing the variable value

Hi, I have a while read loop that reads files in a directory and process. The files have spaces in between, so I have the IFS=\n to to read the whole line as one file name. The read works fine but I have a problem with another variable that I set in the beginning of the script. The variable... (1 Reply)
Discussion started by: pvar
1 Replies

10. Programming

Changing stdin from file redirection to console input

Hi I am doing file redirection at console for use by my binary. %console%> bin &lt inputfile After reading in the entire file, I want my program to continue taking input from the console. So essentially I want to redirect stdin back to console. But I cant figure out how to do it. I am... (4 Replies)
Discussion started by: nauman
4 Replies
Login or Register to Ask a Question