逐行读取文件,将值赋值给变量

逐行读取文件,将值赋值给变量

我有以下.txt文件:

Marco
Paolo
Antonio

我想逐行读取它,对于每一行,我都希望将一个.txt行值赋给一个变量。假设我的变量是$name,流量是:

  • 从文件中读取第一行
  • 指派

    $name

    =“马可”
  • $name

  • 从文件中读取第二行
  • 指派

    $name

    =“Paolo”


慕雪6442864
浏览 1255回答 3
3回答

POPMUISE

以下内容逐行读取作为参数传递的文件:#!/bin/bashwhile&nbsp;IFS=&nbsp;read&nbsp;-r&nbsp;line;&nbsp;do &nbsp;&nbsp;&nbsp;&nbsp;echo&nbsp;"Text&nbsp;read&nbsp;from&nbsp;file:&nbsp;$line"done&nbsp;<&nbsp;"$1"这是标准形式用于从循环中的文件中读取行。说明:IFS=(或IFS='')防止前导/尾随空格被裁剪。-r防止反斜杠被解释。如果将上述内容保存到具有文件名的脚本中readfile,可以按以下方式运行:chmod&nbsp;+x&nbsp;readfile./readfile&nbsp;filename.txt如果文件不是标准POSIX文本文件(=不以换行符结尾),可以修改循环以处理尾随的部分行:while&nbsp;IFS=&nbsp;read&nbsp;-r&nbsp;line&nbsp;||&nbsp;[[&nbsp;-n&nbsp;"$line"&nbsp;]];&nbsp;do &nbsp;&nbsp;&nbsp;&nbsp;echo&nbsp;"Text&nbsp;read&nbsp;from&nbsp;file:&nbsp;$line"done&nbsp;<&nbsp;"$1"这里,|| [[ -n $line ]]如果最后一行没有以\n(自read当遇到EOF时,返回非零退出代码。如果循环中的命令也从标准输入中读取,则read可能会发生其他事情(避免标准文件描述符),例如:while&nbsp;IFS=&nbsp;read&nbsp;-r&nbsp;-u3&nbsp;line;&nbsp;do &nbsp;&nbsp;&nbsp;&nbsp;echo&nbsp;"Text&nbsp;read&nbsp;from&nbsp;file:&nbsp;$line"done&nbsp;3<&nbsp;"$1"(非巴什壳可能不知道read -u3;使用read <&3)

缥缈止盈

我鼓励你使用-r旗read代表:-r&nbsp;&nbsp;Do&nbsp;not&nbsp;treat&nbsp;a&nbsp;backslash&nbsp;character&nbsp;in&nbsp;any&nbsp;special&nbsp;way.&nbsp;Consider&nbsp;each &nbsp;&nbsp;&nbsp;&nbsp;backslash&nbsp;to&nbsp;be&nbsp;part&nbsp;of&nbsp;the&nbsp;input&nbsp;line.我引用的是man 1 read.另一件事是将文件名作为参数。以下是更新的代码:#!/usr/bin/bashfilename="$1"while&nbsp;read&nbsp;-r&nbsp;line;&nbsp;do &nbsp;&nbsp;&nbsp;&nbsp;name="$line" &nbsp;&nbsp;&nbsp;&nbsp;echo&nbsp;"Name&nbsp;read&nbsp;from&nbsp;file&nbsp;-&nbsp;$name"done&nbsp;<&nbsp;"$filename"
打开App,查看更多内容
随时随地看视频慕课网APP