Expand Variables and Wildcards into another variable.


Login or Register to Reply

 
Thread Tools Search this Thread
# 1  
Expand Variables and Wildcards into another variable.

Dear Forum members,


I am having trouble getting the complete filename (and directory path) in a variable.



Output directory mentioned in the code have three files:

Code:
DISPLAY_CITY_DETAILS_15-05-2019-08-29-26_MIGRATE_london.out
DISPLAY_CITY_DETAILS_15-05-2019-08-29-26_MIGRATE_paris.out
DISPLAY_CITY_DETAILS_15-05-2019-08-29-26_MIGRATE_rome.out

******************************************************
Code is as shown below:
I am tryin to get get the full path of the above files (including directory path in variable file_path).

Code:

output_dir=$HOME'/country/city/'

while IFS= read -r city_name
do
    
 ## None of the below command  worked.    



     file_path=`${output_dir}/*MIGRATE*${city_name}*.out`
    # eval file_path=`${output_dir}/*MIGRATE*${city_name}*.out`
    # file_path=${eval echo `ls ${output_dir} | grep "MIGRATE"`}
    # eval file_path=`ls ${output_dir} | grep "MIGRATE"`
       
    echo $file_path
 
done < ${city_list}    

##  city_list is the list of cities for which I want to display details

Can anybody help with the command?

Thanks.
# 2  
Code:
file_path=${output_dir}
files_list=`ls ${output_dir}/*MIGRATE*${city_name}*.out`

This User Gave Thanks to anbu23 For This Post:
# 3  
Thanks Anbu23 for quick reply. The command sent by you is working.



But what is the difference between below two?

Code:
file_path=${output_dir} 

files_list=`ls ${output_dir}/*MIGRATE*${city_name}*.out`

and

Code:
file_path=${output_dir} 

files_list=`echo ${output_dir}/*MIGRATE*${city_name}*.out`

both seems to be working..
# 4  
A very, very simple example:
Code:
Last login: Wed May 15 18:04:12 on ttys000
AMIGA:amiga~> ls Au*
AudioScope.Circuits       AudioScope.sh
AudioScope.Config         AudioScope_1.sh
AudioScope.Manual         AudioScope_Quick_Start.Notes
AMIGA:amiga~> 
AMIGA:amiga~> echo Au*
AudioScope.Circuits AudioScope.Config AudioScope.Manual AudioScope.sh AudioScope_1.sh AudioScope_Quick_Start.Notes
AMIGA:amiga~> _

# 5  
You see the difference with
Code:
echo "$file_path"

The quotes prevent the shell to do word-splitting on command arguments.

ls is an external command. The efficient per-line formatter is printf "%s\n" that 1. is a shell-builtin and 2. does no extra I/O.

What do you want to do with the $file_path?
It can make sense to not expand it too early. For example
Code:
file_path="${output_dir}/*MIGRATE*${city_name}*.out"
for f in $file_path

is smarter than
Code:
file_path=`ls ${output_dir}/*MIGRATE*${city_name}*.out`
for f in $file_path

Login or Register to Reply

|
Thread Tools Search this Thread
Search this Thread:
Advanced Search

More UNIX and Linux Forum Topics You Might Find Helpful
dynamic variables - eval - expand etc.
TehOne
Hello, so i'm making a script, using dynamic variables and trying to expand them. So far it hasn't worked out too well so it seems that I need some help from you, the elite. Example: #!/bin/sh counter=0 until (($counter>5)) counter2=1 until (($counter2>6)); do if ;...... Shell Programming and Scripting
5
Shell Programming and Scripting
Expand an environment variable in sed, when the variable contains a slash
Ilja
I'm trying to make a sed substitution where the substitution pattern is an environment variable to be expanded, but the variable contains a "slash". sed -e 's/<HOME_DIRECTORY>/'$HOME'/'This gives me the following error: sed: -e expression #1, char 21: unknown option to `s'Obviously this is...... Shell Programming and Scripting
2
Shell Programming and Scripting
For loop using input file doesn't expand variables
Hesiod
Hi, I'm using a for loop reading from an input file that contains files, whose path includes a variable name. But the for loop doesn't expand the variable and therefore can't find the file. Here's an example: File BACKUPFILES /home/John/alpha /home/Sue/beta...... Shell Programming and Scripting
8
Shell Programming and Scripting
Using wildcards in variables in zsh
RainbowLAr
Probably a stupid question... how do I use a wildcard in a variable in zsh? If I do: var=* echo $var in bash, it will print all files/directories in the current directory. If I do it in zsh, it will only output an asterisk without the wildcard functionality. Thanks in advance!... UNIX for Dummies Questions & Answers
1
UNIX for Dummies Questions & Answers
how to expand environment variables in a file?
debbie15
I am new to unix and would appreciate if someone could help. I have an environment variable SourceFilePath=/db1/Src/test set on the unix server. I want to expand this SHELL variable in a file using any command sed, awk etc File contents is as follows: var=$SourceFilePath/file.txt ...... UNIX for Dummies Questions & Answers
2
UNIX for Dummies Questions & Answers