Linux 使用bash from变量的for循环

Linux 使用bash from变量的for循环,linux,bash,unix,scripting,Linux,Bash,Unix,Scripting,假设我有一个具有值的变量: #!/bin/sh MYVARIABLE="first,second,third" for vars in MYVARIABLE do echo $vars done 上面的这张图片不符合我的要求,但看起来不错,应该打印第一张、第二张、第三张,没有,我不想打印,没有,任何建议吗?试试看 MYVARIABLE="first,second,third" IFS="," set -- $MYVARIABLE for i in $

假设我有一个具有值的变量:

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

    for vars in MYVARIABLE
    do 
    echo $vars
    done
上面的这张图片不符合我的要求,但看起来不错,应该打印第一张、第二张、第三张,没有
我不想打印,没有
任何建议吗?

试试看

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
或者,如果您使用IFS,请不要忘记在完成后将IFS设置回原始设置

MYVARIABLE="first,second,third"

OIFS=$IFS
IFS=","
for vars in $MYVARIABLE
do 
    echo $vars
done
IFS=$OIFS
使用
IFS
(输入字段分隔符),例如


不确定您想对MYVARIABLE的内容做什么,或者如何填充它,但是处理CSV数据的一个很好的选择是使用
awk

如果您只需打印此变量:

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

如果您有一个CSV文件,并且需要对数据执行计算/转换,那么您应该让awk使用以下方式获取该文件:

awk'BEGIN{FS=“,”OFS=“\n”}{print$1,$2,$3}filename.csv


(这只是一个想法,与你的问题无关)

@ghostdog74我想让它作为一个循环,而不是我必须一个接一个地回显项目,大小不一。tnxIs像ar建议的那样,
set
比循环有什么好处吗?末尾的for循环已经做到了。单独的
回音
只是为了显示在使用
set
@Boldewyn设置变量后如何访问参数,如果使用
set
,每个字段将被分配一个位置参数,如$1、$2、$3等。如果您想要获得准确的字段,这很有用。是的,但如果我只是想循环这些东西,就像问题所暗示的,数组上的迂回只会使脚本复杂化,不是吗?这意味着什么?替换为新行字符?@London对,您也可以将其替换为空格:试试“,”
MYVARIABLE="first,second,third"

OIFS=$IFS
IFS=","
for vars in $MYVARIABLE
do 
    echo $vars
done
IFS=$OIFS
#!/bin/sh
MYVARIABLE="first,second,third"
IFS=","

for vars in $MYVARIABLE
do 
  echo $vars
done