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

Why does this variable become blank?

Got questions? Go ahead: Ask me anything!

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
 echo "Setting source directory to /usr1/src"
 export src_path=/usr1/src
 echo $src_path
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" ]

brinan White noted that the script will work in ksh

Got something to add? Send me email.

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

Printer Friendly Version

-> -> Why does this variable become blank?

Increase ad revenue 50-250% with Ezoic

More Articles by

Find me on Google+

© Anthony Lawrence

Kerio Samepage

Have you tried Searching this site?

Support Rates

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

Write a paper promising salvation, make it a 'structured' something or a 'virtual' something, or 'abstract', 'distributed' or 'higher-order' or 'applicative' and you can almost be certain of having started a new cult. (Edsger W. Dijkstra)

This post tagged: