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