Solved

bash script to expand variables

Posted on 2014-09-30
3
340 Views
Last Modified: 2014-09-30
in a bash script, the user keys in a command with arguments
some of the arguments are variables defined in the bash profile
i need to run the command they enter
How does the script get the information and then does the whole command?

in the bash profile
  export TESTING=/home/programming

in the script, the user keys in: cd $TESTING/penguins

the script needs to: cd /home/programming/penguins

I am running RedHat EL 6.4
0
Comment
Question by:penguins_rule
3 Comments
 
LVL 37

Expert Comment

by:Gerwin Jansen, EE MVE
ID: 40353364
The script inherits the variables from the environment, you are setting the TESTING variable in the bash profile.

In the script you can use variables by using $VARIABLE_NAME or ${VARIABLE_NAME} in your case $TESTING or ${TESTING}

By doing: cd $TESTING/penguins in the script it is in fact doing: cd /home/programming/penguins

So looks OK to me ;)
0
 
LVL 19

Accepted Solution

by:
simon3270 earned 500 total points
ID: 40353405
Are the users prompted to enter a command, then they type in "cd $TESTING/penguins"?

If so, the command you need is "eval", as in:
echo "Enter your command:"
read cmd
eval $cmd

Open in new window

This is a bit dangerous (they could type in anything!).

I did think that there might be a specific problem with the "cd" command - if the command is run in a subshell, then the "cd" would have no effect, but in the above example it would actually change the directory.
0
 
LVL 1

Author Comment

by:penguins_rule
ID: 40353595
in my case, i am using the script to make sure they can only type in certain commands. Otherwise, i agree, it would be dangerous.
0

Featured Post

Use Case: Protecting a Hybrid Cloud Infrastructure

Microsoft Azure is rapidly becoming the norm in dynamic IT environments. This document describes the challenges that organizations face when protecting data in a hybrid cloud IT environment and presents a use case to demonstrate how Acronis Backup protects all data.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

1. Introduction As many people are interested in Linux but not as many are interested or knowledgeable (enough) to install Linux on their system, here is a safe way to try out Linux on your existing (Windows) system. The idea is that you insta…
It’s 2016. Password authentication should be dead — or at least close to dying. But, unfortunately, it has not traversed Quagga stage yet. Using password authentication is like laundering hotel guest linens with a washboard — it’s Passé.
Learn how to find files with the shell using the find and locate commands. Use locate to find a needle in a haystack.: With locate, check if the file still exists.: Use find to get the actual location of the file.:
This demo shows you how to set up the containerized NetScaler CPX with NetScaler Management and Analytics System in a non-routable Mesos/Marathon environment for use with Micro-Services applications.

770 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question