当前位置: 首页 > Linux

Bash脚本编程引号

时间:2023-04-06 06:27:16 Linux

quoting是指用引号将字符串括起来,以保护字符串中的特殊字符不被shell或shell脚本重新解释或扩展:#在通配符和常规模式中具有特殊含义*号在引用bash$ls-l[Vv]*-rw-rw-r--1bozobozo324Apr215:05VIEWDATA.BAT-rw-rw-r--1bozobozo507May414:25vartrace。sh-rw-rw-r--1bozobozo539Apr1417:11viewdata.shbash$ls-l'[Vv]*'ls:[Vv]*:Nosuchfileordirectorybutsomeprogramsreinterpretorexpandspecial引号字符串中的字符。例如,在某些场景下,引号用于保护shell命令参数,但仍然允许调用程序扩展特殊字符:bash$catfile1.txtfirstnameinfile1.txtbash$catfile2.txtFirstnameinfile2.txtbash$grep'[Ff]irstname'*.txtfile1.txt:firstnameinfile1.txtfile2.txt:Firstnameinfile2.txt引用变量时引用变量时,通常建议用双引号括起来。这可以防止重新解释带引号的字符串中除$、`、\之外的所有特殊字符。使用双引号可以防止分词,双引号内的参数即使包含空格也会被认为是一个整体:List="onetwothree"forain$List#spacesplitvariablesintomultiplepartsdoecho"$a"done#one#two#threecho"---"forain"$List"#双引号将变量作为一个整体括起来doecho"$a"done#onetwo3更详细的例子:variable1="一个变量包含五个words"#Executeechocommandwith7parameters#"This""is""a""variable""containing""five""words"echoThisis$variable1#Executeechowith1parameterInstruction#"这是一个变量,包含五个字"echo"Thisis$variable1"variable2=""#执行0个参数的echo指令echo$variable2$variable2$variable2#执行3个参数的echo指令(3个空字符串)echo"$variable2""$variable2""$variable2"#执行带1个参数(2个空格)的echo命令echo"$variable2$variable2$variable2"仅当出现分词和空格字符保留问题时,echo命令只需要将其括起来双引号中的参数。单引号引号(强引号)和双引号引号(弱引号)类似,只是禁用了$的特殊含义,所以不能引用变量,不仅如此,实际上除了'之外的所有特殊字符都只会表达其字面意义意义。转义转义是一种引用单个字符的方法,字符前的转义字符\告诉shell按字面解释该字符。某些命令,如echo、sed,可能会对字符转义产生相反的效果,从而触发该字符的特殊含义。例如:\n表示换行\r表示回车\t表示制表符\v表示垂直制表符\b表示退格\a表示蜂鸣\0xx表示等效的ASCII字符,其中xx是一串数字。$'...'形式的字符串扩展构造是一种使用转义八进制或十六进制值将ASCII字符分配给变量的机制。#使用$'\X'构造省略-e选项echo-e"\n"echo$'\n'#打印换行符