Text-Processing
對於 .txt 文件中的給定字元串(2 或 3 個字)並列印整行。
我的
.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
如果我執行它並蒐索Frank Lockwood它會列印這兩行。但是我想在整個輸入字元串匹配時列印該行(名字和姓氏)
你應該把它改成這樣:
#!/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
。