Bash 从CSV读取到数组中的单独字符串无效

Bash 从CSV读取到数组中的单独字符串无效,bash,csv,Bash,Csv,我的CSV文件如下所示: repo_name1,path1,branch1 branch2 我用以下代码阅读: INPUT=repos.csv OLDIFS=$IFS IFS=',' [ ! -f $INPUT ] && { echo "$INPUT file not found"; exit 99; } while read repo_name local_path branches do printf "\n" ec

我的CSV文件如下所示:

repo_name1,path1,branch1 branch2
我用以下代码阅读:

INPUT=repos.csv
OLDIFS=$IFS
IFS=','

[ ! -f $INPUT ] && { echo "$INPUT file not found"; exit 99; }
while read repo_name local_path branches
do
    printf "\n"
    echo "Repository name: $repo_name"
    echo "Local path: $local_path"
    cd $local_path
    for branch in $branches
    do
        echo branch
        printf "\n"
    done
done < $INPUT
IFS=$OLDIFS
INPUT=repos.csv
OLDIFS=$IFS
如果s=','
[!-f$INPUT]&&&{echo“$INPUT文件未找到”;退出99;}
读取repo_name本地_路径分支时
做
printf“\n”
echo“存储库名称:$repo_名称”
回显“本地路径:$Local_路径”
cd$本地路径
以$Branchs为单位的分支
做
回声支
printf“\n”
完成
完成<$INPUT
IFS=$OLDIFS
我想在bash脚本中将branch1和branch2拆分为一个数组

我试了在stackoverflow上找到的所有东西 , , ,但没有任何东西正常工作,我得到的是包含1个元素的数组->
branch1 branch2


你知道我做错了什么吗?

你必须分两步来做:

input=repos.csv
当IFS=,read-r repo path branchstr;做

read-ra分支您已经设置了
IFS=','
,并尝试读取以空格分隔的数组
IFS=“,$IFS”
,以添加逗号,但保留常用的分隔符。(和
echo branch
可能应该是
echo“$branch”
对于$branchs中的branch
——您正在使用IFS=,来拆分
$branchs
,在$branchs中没有逗号,所以您只能通过该循环进行一次迭代。谢谢,这对我很有用。你能告诉我如何摆脱这个“declare”输出吗?@cropyee它是
declare
命令的输出,这是查看变量包含什么的简单方法。只需将
declare
行替换为您想对
repo
path
分支执行的任何操作即可。
$ ./split
declare -- repo="repo_name1"
declare -- path="path1"
declare -a branches=([0]="branch1" [1]="branch2")