首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Bash:逐行读取文件,拆分行,作为命令行传递

Bash:逐行读取文件,拆分行,作为命令行传递
EN

Stack Overflow用户
提问于 2016-10-03 15:19:40
回答 2查看 1.1K关注 0票数 1

我正在读取一个test.txt文件。格式:

代码语言:javascript
复制
79033d0135a21e45c60e283785f5914b
dde8d97a40cd22667ccb3ca972197586
4fd5ea73cd51db256384fb3333b0eb3d

我正在逐行读取这个文件,并将其拆分为(例如。第1行: 79 03 3d 01 35 a2 1e 45 c6 0e 28 37 85 f5 91 4b)

bash脚本是:

代码语言:javascript
复制
#!/bin/bash
while IFS='' read -r line || [[ -n "$line" ]]; do
    a="$line" | cut -c1-2
    b="$line" | cut -c3-4
    c="$line" | cut -c5-6
    d="$line" | cut -c7-8
    e="$line" | cut -c9-10
    f="$line" | cut -c11-12
    g="$line" | cut -c13-14
    h="$line" | cut -c15-16
    i="$line" | cut -c17-18
    j="$line" | cut -c19-20
    k="$line" | cut -c21-22
    l="$line" | cut -c23-24
    m="$line" | cut -c25-26
    n="$line" | cut -c27-28
    o="$line" | cut -c29-30
    p="$line" | cut -c31-32
    #./a.out "$a" "$b" "$c" "$d" "$e" "$f" "$g" "$h" "$i" "$j" "$k" "$l" "$m" "$n" "$o" "$p"
    echo "$line"
    echo "$a $b $c $d $e $f $g $h $i $j $k $l $m $n $o $p"
done < test_10.txt

现在我只是想打印变量。我打算稍后将它们作为命令行arg传递给我的C++程序。

问题是,我无法打印变量。当然,我的C++程序也不能接受参数。

我做错了什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-10-03 15:22:28

您需要命令替换,$(),(以及echo):

代码语言:javascript
复制
a=$(echo "$line" | cut -c1-2)

在这里,命令echo "$line" | cut -c1-2的STDOUT将保存为变量a

与创建匿名管道不同,您可以使用“此处”字符串<<<传递变量内容:

代码语言:javascript
复制
a=$(cut -c1-2 <<<"$line")

现在选择任何方法,并对所有其他方法应用相同的方法。

票数 1
EN

Stack Overflow用户

发布于 2016-10-03 15:24:04

要使管道按您的意愿工作,$line的内容需要到达stdin,例如通过echo

此外,您还需要使用带有backticks或$()$()(后者是首选方法)来将变量设置为命令的结果,否则它将尝试将echo "$line" | cut -c1-2的输出计算为命令本身,可能会给您一个command not found错误。

例如,您的第一个任务应该是

代码语言:javascript
复制
a=$(echo "$line" | cut -c1-2)

其他人也会遵循类似的模式。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39835000

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档