I am trying to create a shell script, below is a part of which where i am trying to extract some value from a record in a file:
tgt_val=`cat $file_name | grep "$string_name" | cut -d"|" -f$column_no`
This work perfectly when the specified column has some numeric or string value however it fails when th column has value as " * "
eg:
102|Sam|*|USA
This command would work correctly for column 1,2 & 4
However in case of column 3 it gives me output as all the files in present directory.
Someone please help over this.
printf '%s\n' "$tgt_val"
, notecho $tgt_val
(same for those$file_name
and$column_no
that you forgot to quote). See also Security implications of forgetting to quote a variable in bash/POSIX shells – Stéphane Chazelas Jan 13 '16 at 12:37