2014-02-28 12 views
0

PhoneBook.txt具有由:如何在需要時將最多2個名稱存儲到我的變量中,以及如何避免名稱中可能出現的單引號?

ex= first:last:number   - simple 
ex= first first:last last:number - 2 firstnames and/or 2 last names 
ex= f'irst:l'ast:number   - first name or last name with a single quote in it. 

我現在的腳本

#!/bin/bash 

firstName="$1" 

lastName="$2" 

if [[ "$firstName" == "" ]]; then 

    read -p "Please enter a first name: " firstName 

fi 

if [[ "$lastName" == "" ]]; then 

    read -p "Please enter a last name: " lastName 

fi 

grep "$firstName:$lastName" PhoneBook.txt 

回答

2

-F參數告訴grep尋找一個固定的字符串,而不是一個正則表達式分隔的名字。

+0

@ Ignacio Vazquez-Abrams我在我的grep語句中添加了這個內容,但如果嘗試從命令行使用電話簿,它仍然不起作用。前/後首先倒數第一。但是,當通過提示完成時,程序可以處理2個第一或2個最後一個單引號,我只是不知道如何從命令行執行相同的操作。 – user3347022

+0

傳遞多個單詞傳遞多個參數。引用或逃避空間。 –

+0

如何爲名稱中的單引號實例做這件事? – user3347022

1

使用雙引號來界定你的論點在命令行中,例如:

./phonebook "first1 first2" "last o'last" 
  • 您可以隨意在雙引號字符串使用單引號。
  • 請注意,雙引號字符串受制於參數(變量)和命令替換,所以字面值爲$字符的實例。必須轉義爲\$
  • 同樣,嵌入的雙引號必須轉義爲\"

需要注意的是,相比之下,有在單引號的字符串嵌入單引號沒有直接的方法 - 你必須打散字符串,並插入一個轉義單引號,\';例如單引號isn't,使用'isn'\''t';不過,您可以自由嵌入報價。

+0

知道的好東西!不過,我認爲我正在努力使其過於用戶友好,我認爲我想要完成的事情不是我能完成的事情!謝謝你的好消息! – user3347022

+1

@ user3347022:不客氣,如果你認爲其他人也可能會覺得它有用,請注意它。 – mklement0

相關問題