I have a one-line file with a value stored as a string in it:
The file name is
server_name. What's the shortest, most elegant way to rad this value into a variable with bash script?
You can do a "useful use of cat" ;)
VAR = $(cat $(dirname $0)/server_name)
This will put the content of "server_name" file, located in the same directory as your script, into $VAR. Works regardless of where you run the script.
You can use the
read command. If you don't provide any variable, the line gets saved automatically into the variable
REPLY in Bash. If you provide a singe variable, the line gets saved into that variable. If you provide multiple variables, Bash will split the line as words (the splitting is done on whitespace), trying to put one word into each variable. (If there are more words than variables, each variable gets one word, but the last gets the rest of the line.)
telemachus ~ $ read < buff telemachus ~ $ echo $REPLY #!/usr/bin/env perl telemachus ~ $ read LINE < buff telemachus ~ $ echo $LINE #!/usr/bin/env perl
Note that the variable is assigned without a dollar sign (
LINE), but when you use it, you need
So you would want something like this:
read SERVER < /path/to/server_name
I recommend that you use the full path of the file that you want to read rather than assuming that the two scripts will be in the same directory.
I won't swear that this is the most elegant solution.