请注意,我在下面的后续问题中已完全回答了这个问题: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时死机了,所以我不知道问题出在哪里。
有人有任何建议吗?
谢谢:)
答案 0 :(得分:0)
您应该检查echo "$i"
而不是echo $i
的输出。
您认为{0..5..1}
的输出应该是什么?
不能在范围运算符中使用变量。请改用seq
。
数组索引的工作方式如下:${test[$i]}
。
答案 1 :(得分:0)
我们不必为数组索引操心;我们可以简单地逐行处理文本:
row_number()