我需要一个bash中的脚本来读取文件并识别分隔符(&#34 ;;")并将分隔符之间的值存储到变量中以便稍后构建对话框菜单。
我做了什么:
#!/bin/bash
file="Tarefas.cfg"
nomeTarefa=''
dirOrigem=''
dirDest=''
tipoBkp=''
agendarBkp=''
compactarBkp=''
gerarLog=''
echo
for linha in $(cat $file)
do
nomeTarefa=$(echo $linha | cut -d\; -f1 )
dirOrigem=$(echo $linha | cut -d\; -f2 )
dirDest=$(echo $linha | cut -d\; -f3 )
tipoBkp=$(echo $linha | cut -d\; -f4 )
agendarBkp=$(echo $linha | cut -d\; -f5 )
compactarBkp=$(echo $linha | cut -d\; -f6 )
gerarLog=$(echo $linha | cut -d\; -f7 )
echo "$nomeTarefa $dirOrigem $dirDest $tipoBkp $agendarBkp $compactarBkp $gerarLog"
echo
done
它读取的文件是:
Minha Tarefa;/home/;/home/;Diferencial;;N;S;
Minha Tarefa;/home/thalesg;/home/;Diferencial;;N;S;
输出:
Minha Minha Minha Minha Minha Minha Minha
Tarefa /home/ /home/ Diferencial N S
Minha Minha Minha Minha Minha Minha Minha
Tarefa /home/thalesg /home/ Diferencial N S
答案 0 :(得分:3)
使用while
,你可以在一次通话中将一条线分成很多变量
您需要临时将FieldSep(IFS)更改为;
并避免额外拨打cat
:不要使用cat $file | ..
但请使用< $file
file="Tarefas.cfg"
while IFS=";" read nomeTarefa dirOrigem dirDest tipoBkp agendarBkp compactarBkp gerarLog; do
echo "$nomeTarefa $dirOrigem $dirDest $tipoBkp $agendarBkp $compactarBkp $gerarLog"
echo "Show one field, the compactarBkp: $compactarBkp"
done < $file