开发者

for loop with bash from variable

Lets say I have a variable which has values :

#!/bin/sh
    MYVARIABLE="first,second,third"

    for vars in MYVARIABLE
  开发者_JAVA百科  do 
    echo $vars
    done

this above doesn't work what I want but it looks fine, this should print first second third without , I wan't it to be printed without , any sugestions?


Use IFS (the input field separator), eg.

#!/bin/sh
MYVARIABLE="first,second,third"
IFS=","

for vars in $MYVARIABLE
do 
  echo $vars
done


try

MYVARIABLE="first,second,third"

for vars in $(echo $MYVARIABLE | tr "," "\n")
do 
  echo $vars
done

Or if you use IFS, don't forget to set IFS back to the original one when done

MYVARIABLE="first,second,third"

OIFS=$IFS
IFS=","
for vars in $MYVARIABLE
do 
    echo $vars
done
IFS=$OIFS


MYVARIABLE="first,second,third"
IFS=","
set -- $MYVARIABLE
for i in ${@}; do echo $i; done

# you can also use an array in cases where you want to use the values later on
array=($@)
for i in ${!array[@]}; do echo ${array[i]}; done


Not sure what you want to do with the content of MYVARIABLE, or how do you fill it, but a very good option to deal with CSV data is to use awk.

If you have just this variable to be printed:

echo $MYVARIABLE | awk 'BEGIN { RS="," }{ print $0 }'

If you have a CSV file and need to perform calculation/transformation on the data then you should let the awk to fetch the file, using someting like:

awk 'BEGIN { FS="," ; OFS="\n" } { print $1,$2,$3 }' filename.csv
(this is just an ideia, not really related to your question)

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜