APLawrence.com -  Resources for Unix and Linux Systems, Bloggers and the self-employed

Why does this variable become blank?


Some material is very old and may be incorrect today

© July 2015 Anthony Lawrence

Anonymous asks:

Why does this variable become blank? It's obviously set in the first part, but it goes away.


who am i | if grep tony > /dev/null  2>&1
 then
 echo "Setting source directory to /usr1/src"
 export src_path=/usr1/src
 echo $src_path
 else
 src_path=/usr2/src
fi
echo -e "src_path= $src_path"
 

What happens here is actually very simple, although it may seem baffling at first. Yes, the "if then" block sets the variable to either /usr1/src or /usr2/src, so it surprised you to find it blank in the last line which echoed "src_path= $src_path".

What you missed is that piping "who am i" to that "if" block caused the creation of a new shell for everything in the block. Variables changed in a new shell don't change the values in the calling shell, so $src_path was still blank.

Something like this will work much better:

IAM=`who am i | cut -d" " -f1`

if [ $IAM == "tony" ]
 then
 ..
 

brinan White noted that the script will work in ksh


If you found something useful today, please consider a small donation.



Got something to add? Send me email.





(OLDER)    <- More Stuff -> (NEWER)    (NEWEST)   

Printer Friendly Version

->
-> Why does this variable become blank?


Inexpensive and informative Apple related e-books:

Take Control of iCloud

Take Control of High Sierra

iOS 8: A Take Control Crash Course

Take Control of Apple Mail, Third Edition

Take Control of Automating Your Mac





More Articles by © Anthony Lawrence





Printer Friendly Version

Have you tried Searching this site?

This is a Unix/Linux resource website. It contains technical articles about Unix, Linux and general computing related subjects, opinion, news, help files, how-to's, tutorials and more.

Contact us


Printer Friendly Version





The idea of "work, then get paid" has been deeply ingrained in our culture by employers who want to limit their risk. Well, I like to limit my risks also. I like to get paid before I do work. (Tony Lawrence)




Linux posts

Troubleshooting posts


This post tagged:

Bash

Forum

Scripting

Shell



Unix/Linux Consultants

Skills Tests

Unix/Linux Book Reviews

My Unix/Linux Troubleshooting Book

This site runs on Linode