Bash函数检查文件中是否有文本,如果没有则添加文本

时间:2020-03-27 07:51:24

标签: bash

请注意,我在下面的后续问题中已完全回答了这个问题:I keep on getting host=dynamic when inputting the filepath into bash function

2018年:Hytec Holdings进行中级气动培训

我正在尝试创建一个函数来检查其中的文件是否包含文本。

如果文件已包含此文本,则该函数应将文本添加到文件中。

#!/bin/bash
#Function that checks if text (ARGV1) is in a document (ARGV2). Please make ARGV1 a an array of strings, with each new line a new entry in the array.
function docCheckNReplace {
    local text=$1
    local document=$2
    local textLen=${#text[@]}
    for i in {0..$(($textLen - 1))..1}; do
        echo $i
        if grep -q ${test[i]} $document; then
            echo ${test[i]} 'was found in' $document
        else
            echo ${test[i]} >> $document
        fi
    done
}

这是我到目前为止提出的。

我在运行Linux时死机了,所以我不知道问题出在哪里。

有人有任何建议吗?

谢谢:)

2 个答案:

答案 0 :(得分:0)

您应该检查echo "$i"而不是echo $i的输出。

您认为{0..5..1}的输出应该是什么?

不能在范围运算符中使用变量。请改用seq

数组索引的工作方式如下:${test[$i]}

答案 1 :(得分:0)

我们不必为数组索引操心;我们可以简单地逐行处理文本:

row_number()