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
 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

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:





Unix/Linux Consultants

Skills Tests

Unix/Linux Book Reviews

My Unix/Linux Troubleshooting Book

This site runs on Linode