我正在编写我的第一个 Bash 脚本,我对 C 和 C# 有一定的经验,所以我认为程序的逻辑是正确的,只是语法太复杂了,因为显然有很多不同的方法可以编写相同的东西!
这是脚本,它只是检查参数(字符串)是否包含在某个文件中。如果是这样,它将文件的每一行存储在一个数组中,并将该数组的一项写入文件中。我确信必须有更简单的方法来实现这一点,但我想用 bash 循环做一些练习
#!/bin/bash
NOME=$1
c=0
#IF NAME IS FOUND IN THE PHONEBOOK THEN STORE EACH LINE OF THE FILE INTO ARRAY
#ONCE THE ARRAY IS DONE GET THE INDEX OF MATCHING NAME AND RETURN ARRAY[INDEX+1]
if grep "$NOME" /root/phonebook.txt ; then
echo "CREATING ARRAY"
while read line
do
myArray[$c]=$line # store line
c=$(expr $c + 1) # increase counter by 1
done < /root/phonebook.txt
else
echo "Name not found"
fi
c=0
for i in myArray;
do
if myArray[$i]="$NOME" ; then
echo ${myArray[i+1]} >> /root/numbertocall.txt
fi
done
此代码仅返回myArray
( myArray[2]
) 的第二项或文件的第二行,为什么?