나는 나의 첫번째 BASH 스크립트를 작성하고있다. 나는 c와 c #에 약간의 경험이있다. 그래서 나는 프로그램의 논리가 옳다고 생각한다. 똑같은 것을 작성하는 수십억 가지 방법이 있기 때문에 구문이 너무 복잡 할 뿐이다!
어쨌든 여기에 스크립트가 있습니다. 단순히 인자 (문자열)가 특정 파일에 포함되어 있는지 확인합니다. 그렇다면 파일의 각 줄을 배열에 저장하고 배열 항목을 파일에 씁니다. 그것을 달성하는 더 쉬운 방법이 있어야한다고 확신하지만 bash 루프로 연습을하고 싶습니다
#!/bin/bash
NOME=$1
c=0
#IF NAME IS FOUND IN THE PHONEBOOK THANK 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]
또는 파일의 두 번째 줄) 만 반환합니다 .
IFS=$'\n' a=($(cat phonebook.txt))
for i in $(seq ${#a[*]}); do
[[ ${a[$i-1]} = $name ]] && echo "${a[$i]}"
done
배쉬 4에서 IFS=$'\n' a=($(cat phonebook.txt))
교체 할 수 있습니다 mapfile -t a < phonebook.txt
.
grep -A1은 일치 후 한 줄을 인쇄합니다. -x는 -F와 같은 정규식을 비활성화하지만 전체 행과 만 일치합니다.
grep -x "$name" -A1 phonebook.txt | tail -n1
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다