如果需要,如何在变量中存储最多2个名称,以及如何在名称中转义可能的单引号?

时间:2014-02-28 19:53:39

标签: bash grep

PhoneBook.txt的名称由:

分隔
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 个答案:

答案 0 :(得分:2)

-F参数告诉grep搜索固定字符串而不是正则表达式。

答案 1 :(得分:1)

使用双引号在命令行上分隔您的参数,例如:

./phonebook "first1 first2" "last o'last"
  • 您可以在双引号字符串中使用单引号。
  • 请注意,双引号字符串受参数(变量)和命令替换的影响,因此文字$字符的实例。必须以\$转义。
  • 同样,嵌入式双引号必须转义为\"

请注意,相比之下,没有直接的方法在单引号字符串中嵌入单引号 - 您必须将字符串分开并插入转义的单引号,{{1} };例如,要引用\',请使用isn't;但是,您可以自由地嵌入引号。