第一行的csv文件有头文件。我需要读取第一行然后解析它以查看它是否具有我正在寻找的元素。 第一行有4个元素。 1. HDR 2.今天的日期3.从日期4.到目前为止。
这是我用来获取第一行的代码。
read -r header < "1" -- this game me the first row into header variable.
我尝试读取此'header'变量以进一步拆分该行。
read f1 f2 f3 < “$header”
echo "OS is : $f1"
echo "Company is: $f2"
echo "Value is : $f3"
我没有显示任何值。我认为原因可能是'标题'不是以字符串形式出现的。
我是unix shell脚本的新手。请帮忙。
答案 0 :(得分:0)
read -r header < "1"
没有。您正在读取名为1
的文件(可能不存在,因此read
失败),因为<
用于redirection。尝试在终端中键入该命令,您将收到错误(“没有此类文件或目录”)。
read f1 f2 f3 < “$header”
这是错误的。如果header
shell变量包含1 2 3
,则您正在读取名为1 2 3
的文件(内部有两个空格的六字符文件路径),因为<
用于{{3} }}
考虑使用redirection来处理由包含多个列的行组成的文件。
在调试阶段考虑使用#!/bin/bash -vx
启动(可执行)shell脚本(以获取跟踪)。花几个小时阅读一些awk,然后阅读shell scripting tutorial。
请务必了解shell bash reference manual,特别是work。请注意,每个程序(例如由某些shell启动)都是由globbing启动的(在某些execve(2)中完成,例如您的shell进程)。
BTW,在read f1 f2 f3 < “$header”
之前你可以(暂时)添加调试输出,例如
echo "header=" "$header" > /dev/stderr
在shell脚本中,了解发生了什么。
(你真的应该花费天来阅读更多有关贝壳的内容)