亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

逐行讀取文件,將值賦值給變量

逐行讀取文件,將值賦值給變量

逐行讀取文件,將值賦值給變量我有以下.txt文件:Marco Paolo Antonio我想逐行讀取它,對于每一行,我都希望將一個.txt行值賦給一個變量。假設我的變量是$name,流量是:從文件中讀取第一行指派$name=“馬可”用$name從文件中讀取第二行指派$name=“Paolo”
查看完整描述

3 回答

?
POPMUISE

TA貢獻1765條經驗 獲得超5個贊

以下內容逐行讀取作為參數傳遞的文件:

#!/bin/bashwhile IFS= read -r line; do
    echo "Text read from file: $line"done < "$1"

這是標準形式用于從循環中的文件中讀取行。說明:

  • IFS=

    (或

    IFS=''

    )防止前導/尾隨空格被裁剪。
  • -r

    防止反斜杠被解釋。

如果將上述內容保存到具有文件名的腳本中readfile,可以按以下方式運行:

chmod +x readfile./readfile filename.txt

如果文件不是標準POSIX文本文件(=不以換行符結尾),可以修改循環以處理尾隨的部分行:

while IFS= read -r line || [[ -n "$line" ]]; do
    echo "Text read from file: $line"done < "$1"

這里,|| [[ -n $line ]]如果最后一行沒有以\n(自read當遇到EOF時,返回非零退出代碼。

如果循環中的命令也從標準輸入中讀取,則read可能會發生其他事情(避免標準文件描述符),例如:

while IFS= read -r -u3 line; do
    echo "Text read from file: $line"done 3< "$1"

(非巴什殼可能不知道read -u3;使用read <&3)


查看完整回答
反對 回復 2019-06-06
?
縹緲止盈

TA貢獻2041條經驗 獲得超4個贊

我鼓勵你使用-rread代表:

-r  Do not treat a backslash character in any special way. Consider each
    backslash to be part of the input line.

我引用的是man 1 read.

另一件事是將文件名作為參數。

以下是更新的代碼:

#!/usr/bin/bashfilename="$1"while read -r line; do
    name="$line"
    echo "Name read from file - $name"done < "$filename"


查看完整回答
反對 回復 2019-06-06
  • 3 回答
  • 0 關注
  • 1397 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號