Reputation: 905
I am trying to print the value of VARI
in the same line followed by a comma, so that i can have a csv file of these values, but i m not able to save the value of
VARI = 'cat filename | head -1 | cut -d, -f${i}'
i=0
while (( i<130)) ;
do
if [[ $i -eq 1 || $i -eq 9 || $i -eq 12 || $i -eq 23 || $i -eq 25 || $i -eq 29 ]]
then
VARI = 'cat filename | head -1 | cut -d, -f${i}'
echo "$VARI ,"
fi
let i=$i+1;
done
output expected is
4,abc,5,8,xyz,9
Please let me know what i am doing wrong, thanks!
Upvotes: 5
Views: 9800
Reputation: 265231
Use backticks (or $()
which can be nested), not single quotes:
VARI=`cat filename | head -1 | cut -d, -f${i}` # or:
VARI=$(cat filename | head -1 | cut -d, -f${i})
Make sure to not have spaces between the variable name, the equal sign, and the variable value.
VAR = x # executes program "VAR" with 2 parameters: "=" and "x"
VAR =x # executes program "VAR" with a single parameter: "=x"
VAR= x # executes program "x" with environment variable "VAR" set to an empty value
VAR=x # assigns value "x" to shell variable "VAR"
Resources: 2.10.2 Shell Grammar Rules of the POSIX.1-2017 specification.
Upvotes: 12