내 .txt
파일에는 다음 내용이 포함되어 있습니다.
The Law and Lawyers of Pickwick, by Frank Lockwood 21214
Frankenstein, by Mary Wollstonecraft 20
첫 번째 문자열은 책 제목, 두 번째 문자열은 저자, 마지막 문자열은 책 번호입니다. 누군가 저자 이름을 사용하여 검색하면 전체 줄을 인쇄하고 싶습니다. grep을 사용해 보았습니다.
#!/bin/bash
BOOKFILE="/home/sk/GUTINDEX.ALL"
author=$1
if [[ -z "$author" ]]; then
echo -n "Author name : "
read author
fi
grep $author $BOOKFILE
이것을 실행해서 검색하면프랭크 록우드이 두 줄을 인쇄합니다. 하지만 전체 입력 문자열(이름과 성)이 일치하면 해당 줄을 인쇄하고 싶습니다.
답변1
다음과 같이 변경해야 합니다.
#!/bin/bash
BOOKFILE="/home/sk/GUTINDEX.ALL"
author=$@
if [[ -z "$author" ]]; then
read -rp "Author name: " author
fi
grep "$author" "$BOOKFILE"
다음과 같이 실행하면:
$ ./script Frank Lockwood
위치 매개변수 1을 로 Frank
, 매개변수 2를 로 설정하고 있습니다 Lockwood
. 매개변수 2는 스크립트에서 사용되지 않습니다. $@
모든 위치 매개변수를 나타내는 배열입니다.
read
또한 변수를 공백이 포함된 문자열로 설정하도록 허용하면 author
grep 행은 따옴표 없이 실패합니다 author
.