02-09-2010
BASH Environment Variables as arguments?
1. The problem statement, all variables and given/known data:
Write a shell program called myenv which takes one argument. The argument should be the name of an environment variable, such as PATH HOME etc. myenv should print out the value of the variable given as the argument. If no argument is given, or the argument is invalid, your program could do unpredictable things!
e.g., myenv PRINTER
should print a line such as: PRINTER=kc3500
e.g., myenv HOME PRINTER
should print a line such as: HOME=/home/dwoit
2. Relevant commands, code, scripts, algorithms:
None that I can think of? Besides the basic start of #!/bin/bash
3. The attempts at a solution (include all code and scripts):
I'm not sure how to write this... I assume I could try setting the argument to a local variable within the script, but that's the next topic (local variables) so I don't think I have to. I know you can see the values of environment variables by typing in $ and then the one you want, so I tried doing ${"$1"} within the program but it doesn't work (I get a bad substitution error) and I have no idea how else to do it. Any help is appreciated, thanks.
#!/bin/bash
echo ${"$1"}
exit 0
4. Complete Name of School (University), City (State), Country, Name of Professor, and Course Number (Link to Course):
Ryerson University, Toronto, Canada, Denise Woit,
CPS393
10 More Discussions You Might Find Interesting
1. UNIX for Dummies Questions & Answers
what is the actual use of environment variables.
I know only PS1, LOGNAME, PS2 variables
what are the other variables & what is there use (2 Replies)
Discussion started by: indianguru
2 Replies
2. Programming
Hi!
How-to get the environment variables in GNU.
getenv() only fetches the ones that you can find under export (not the ones under declare)...
best regars .David (2 Replies)
Discussion started by: Esaia
2 Replies
3. UNIX for Dummies Questions & Answers
Hi Folks,
Is it possible somehow to unset all the environment variables which have been defined before in UNIX (Solaris).
Thanks,
Slava (3 Replies)
Discussion started by: spavlov
3 Replies
4. UNIX for Dummies Questions & Answers
hi,
1). i would like to know what is meant by environment variables?
2). is the number of envi variables is a constant number for unix systems?
3). how to see the list of envi variables (and the values of the envi variables)in a single command?
4). if this questions were already asked... (3 Replies)
Discussion started by: sekar sundaram
3 Replies
5. UNIX for Dummies Questions & Answers
why are all environment variables represented in a fixed format regardless of the shell you use?
like $HOME $PATH etc (6 Replies)
Discussion started by: sravani
6 Replies
6. Shell Programming and Scripting
Hello!
For the moment some settings in my .bashrc contain the password of my company's firewall, which is not a good idea. I would like to use the string "PASSWORD" set in .bashrc and a script that changes all appearances of "PASSWORD" in the environment variables by the actual password (which... (4 Replies)
Discussion started by: markolopa
4 Replies
7. Shell Programming and Scripting
I have read tons of posts about how you can't set persisting environment variable in a child script of a shell and have it persist. The only way is to source a file as
% . <scriptname>
I am finding that true... but I know there is a way around it. I just don't know how. I worked for 6... (5 Replies)
Discussion started by: rwa25
5 Replies
8. HP-UX
Hi Experts,
Need your help in understanding the commands to setup the environment variables in hp-ux.
Beleive need to use either set,setenv or export.
I am confused between above three options, when to use which option?
On command line, I have tried both set and setenv but couldn't... (1 Reply)
Discussion started by: sai_2507
1 Replies
9. Shell Programming and Scripting
Hi Guys,
I have a a bash script and i am exporting a variable in it.
I am calling a csh script from this bash script.
The variable "ABC" will be visible in csh script.
ks.bash
export ABC = abc
./kp.csh
ab.csh
echo $ABC
setenv ABC =cde (i want to assign this value to ABC only if... (4 Replies)
Discussion started by: vdhingra123
4 Replies
10. Shell Programming and Scripting
I have tried with the following:
csh -c 'source ~/.cshrc; exec bash' # works perfectly
(cat ~/.cshrc; echo exec bash) | csh # not working
And, using sed, I successfully retrieved the environment variables from ~/.cshrc
sed -rn 's/setenv\s+(\S+)\s+(.*)$/export \1=\2/p' ~/.cshrc
but now... (6 Replies)
Discussion started by: royalibrahim
6 Replies
WHICH(1) General Commands Manual WHICH(1)
NAME
which - shows the full path of (shell) commands.
SYNOPSIS
which [options] [--] programname [...]
DESCRIPTION
Which takes one or more arguments. For each of its arguments it prints to stdout the full path of the executables that would have been exe-
cuted when this argument had been entered at the shell prompt. It does this by searching for an executable or script in the directories
listed in the environment variable PATH using the same algorithm as bash(1).
This man page is generated from the file which.texinfo.
OPTIONS
--all, -a
Print all matching executables in PATH, not just the first.
--read-alias, -i
Read aliases from stdin, reporting matching ones on stdout. This is useful in combination with using an alias for which itself. For
example
alias which='alias | which -i'.
--skip-alias
Ignore option `--read-alias', if any. This is useful to explicity search for normal binaries, while using the `--read-alias' option in
an alias or function for which.
--read-functions
Read shell function definitions from stdin, reporting matching ones on stdout. This is useful in combination with using a shell func-
tion for which itself. For example:
which() { declare -f | which --read-functions $@ }
export -f which
--skip-functions
Ignore option `--read-functions', if any. This is useful to explicity search for normal binaries, while using the `--read-functions'
option in an alias or function for which.
--skip-dot
Skip directories in PATH that start with a dot.
--skip-tilde
Skip directories in PATH that start with a tilde and executables which reside in the HOME directory.
--show-dot
If a directory in PATH starts with a dot and a matching executable was found for that path, then print "./programname" rather than the
full path.
--show-tilde
Output a tilde when a directory matches the HOME directory. This option is ignored when which is invoked as root.
--tty-only
Stop processing options on the right if not on tty.
--version,-v,-V
Print version information on standard output then exit successfully.
--help
Print usage information on standard output then exit successfully.
RETURN VALUE
Which returns the number of failed arguments, or -1 when no `programname' was given.
EXAMPLE
The recommended way to use this utility is by adding an alias (C shell) or shell function (Bourne shell) for which like the following:
[ba]sh:
which ()
{
(alias; declare -f) | /usr/bin/which --tty-only --read-alias --read-functions --show-tilde --show-dot $@
}
export -f which
[t]csh:
alias which 'alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'
This will print the readable ~/ and ./ when starting which from your prompt, while still printing the full path when used from a script:
> which q2
~/bin/q2
> echo `which q2`
/home/carlo/bin/q2
BUGS
The HOME directory is determined by looking for the HOME environment variable, which aborts when this variable doesn't exist. Which will
consider two equivalent directories to be different when one of them contains a path with a symbolic link.
AUTHOR
Carlo Wood <carlo@gnu.org>
SEE ALSO
bash(1)
WHICH(1)