Bash中单引号和双引号的区别

本文详细介绍了单引号和双引号在Shell脚本中的作用,包括如何保护字符、变量和命令,以及它们在不同场景下的应用。通过多个例子,展示了如何在Shell脚本中正确使用单引号和双引号,以避免字符被意外翻译或命令被错误解析。

单引号和双引号的区别

单引号:必须成对使用,它可以保护所有的字符不被翻译。如变量$1,和奇数个单引号的作用相同,偶数个单引号=1个双引号
双引号:必须成对出现,它可以保护一些元字符不被翻译,但允许变量和命令替换,和偶数个单引号的作用相同。另外,当引用时(使用一个变量的值)用双引号有助于防止由于空格导致单词分割开和由于识别和扩展了通配符而导致的不必要匹配。
反斜线\:shell也不解释转义符\后的字符,'$1'和"\$1"一样
单引号和双引号可以互相保护

例子1:

$ cat test.sh

#!/bin/bash

echo "$1"=$1 "$2"=$2
echo '$1'=$1 '$2'=$2

$ ./test.sh hello world
hello=hello world=world
$1=hello $2=world

例子2:

#!/bin/bash

echo '$1'=$1
echo '$1'='$1'
echo '$1'="$1"          //一个双引号
echo '$1'=$1
echo '$1'='$1'
echo '$1'=''$1''         //两个单引号

例子3:

单引号中的反斜线不被翻译
$echo '\\'
\\

例子4:

单引号保护双引号
$echo 'Mother yelled, "Time to eat!" '
Mother yelled, "Time to eat!"

例子5:

双引号保护单引号
$echo "Hi, I'm glad to mee you"
Hi, I'm glad to meet you 

例子6:

双引号可以防止由于空格导致单次分割
$ names="name1 name2 name3"
$ for name in $names; do
> echo "$name"
> done
name1
name2
name3

$ for name in "$names"; do
$ echo "$name"
$ done
name1 name2 name3

 

转载于:https://www.cnblogs.com/pandachen/p/4604514.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值