Shell 变量用双引号引起来,双引号就是表示这个双引号内为一个字符串。
对于 if 条件语句里所有的字符串的比较时,最好是在变量的外面加上双引号。特别是 if -n 判断字符串是否为null时候(null意思就是字符串长度为0),一定要加上双引号。否则,像下面的case就会出错。
if [ -n $a ] 等价于 if[ -n ]
对于字符串长度为0时,相当于没有参数,这句总返回为真。明明a的为空串,长度为空,但是却判断出来为非空字符串。
改为if [ -n "$a" ]就没有此问题,可以判断出来为此为空字符串。
对于字符串的变量,一个比较特殊的情况,就是数组变量。这个时候变量外面不能用双引号,否则的话,shell会把双引号里的内容当作一个字符串,而不会去以空格分割里面的内容。
arr="12 3 4 5"
for i in $arr ---当数组用,所以不能加双引号
echo $i
arr="12 3 4 5"
for i in "$arr" --加了双引号,就会将$arr的内容作为一个字符串一起输出
echo $i
1 2 3 4 5
所以,一般最好是加上双引号, 但是对于数组类型变量,不加双引号。
Shell 变量用双引号引起来,双引号就是表示这个双引号内为一个字符串。对于 if 条件语句里所有的字符串的比较时,最好是在变量的外面加上双引号。特别是 if -n 判断字符串是否为null时候(null意思就是字符串长度为0),一定要加上双引号。否则,像下面的case就会出错。a=""if [ -n $a ] 等价于 if[ -n ]对于字符串长度为0时,相当于没有参数,这句总
echo输出
echo 单
双引号
的区别,
双引号
支持转义, 开头的
变量
会被自动替换,PWD本身就是特殊
变量
,当前的路径,单
引号
则就是输出。例子:echo”开头的
变量
会被自动替换,PWD本身就是特殊
变量
,当前的路径,单
引号
则就是输出。
echo “开头的
变量
会被自动替换,PWD本身就是特殊
变量
,当前的路径,单
引号
则就是输出。例子:echo”PWD”
/Users/qinqi/Downloads
echo ‘$PWD’
预定义
变量
echo $PWD 当前路径
echo $USER 当前是谁
echo $HOME 当前主目录
echo ~ 波浪线是HOME的简写
一、字符串基础知识
字符串是
shell
编程中最常用最有用的数据类型(除了数字和字符串,也没啥其它类型好用了),字符串可以用单
引号
,也可以用
双引号
,也可以不用
引号
。单
双引号
的区别跟PHP类似。
代码如下:
str=’this is a string’
单
引号
字符串的限制:
•单
引号
里的任何字符都会原样输出,单
引号
字符串中的
变量
是无效的;
•单
引号
字串中不能出现单
引号
(对单
引号
使用转义符后也不行)。
代码如下:
your_name=’qinjx’
str=”Hello, I know your are \”$your_name\”! \n”
双引号
的优点:
•
双引号
里可以有
单
引号
,
双引号
,反向单
引号
的区别:
1、单
引号
:当
变量
内容用单
引号
(‘’)时,对里面的命令echo和
变量
USER都无法识别,只识别成字符串本身,称之为强引用。
2、
双引号
:当
变量
内容用
双引号
(“”)时,是不能识别出里面的命令echo的,但可识别出里面的
变量
USER,称之为弱引用。
3、反向单
引号
:当
变量
内容用反向单
引号
(``)时,对里面的命令echo和
变量
USER都可识别,并执行里面的命令echo,反向单
引号
和$()功能一样。
不
加
引号
:不会将含有空格的字符串视为一个整体输出, 如果内容中有命令、
变量
等,会先把
变量
、命令解析出结果,然后在输出最终内容来,如果字符串中带有空格等特殊字符,则不能完整的输出,需要改
加
双引号
,一般连续的字符串,数字,路径等可以用。
单
引号
:可以说是所见即所得:即将单
引号
内的内容原样输出,或者描述为单
引号
里面看到的是什么就会输出什么。
双引号
:把
双引号
内的内容输出出来;如果内容中有命令、
变量
等,会先把
变量
、命令解析出
提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录不可小看的引用前言一、反斜线二、使用步骤1.引入库2.读入数据总结项目场景:问题描述:原因分析:解决方案:
引用是
shell
脚本内部的一部分,因此专门设置本节来阐明它在所有
shell
中的用法。如果您经常遇到引用方面的语法错误,学习本节之后将确保您能够熟悉如何使用它们,特别是当脚本中包含有类似 grep、sed 和 awk 的命令时。
提示:以下是本篇文章正文内容,下面案例可供参考
一、反斜线
a="<div id=""table_body""></div>"
先前用转义字符表示id,或者用单
引号
表示id,都无法查找。但是
双引号
用两个
双引号
来表示,则可以完成。所以说要定义一个
双引号
,则需要用两个
双引号
来表示。这样就可以解决这类问题。
在
shell
中,单
引号
和
双引号
都可以用来表示字符串。但是它们之间有一些区别。
使用单
引号
包围的字符串中的所有字符都会被视为字面值,也就是说,不管是
变量
还是命令替换,都不会被解释执行。这意味着单
引号
中的特殊字符和转义字符都会被原样输出,不会被解释为特殊含义。
例如,下面的命令:
echo 'Hello $USER'
输出结果为:
Hello $USER
使用
双引号
包围的字符串中的特殊字符和
变量
会被解释执行。这意味着在
双引号
中,
变量
会被替换为其对应的值,而特殊字符会被解释为其特殊含义。
例如,下面的命令:
echo "Hello $USER"
输出结果为:
Hello <当前用户的用户名>
另外,
双引号
中还可以使用反斜杠来转义特殊字符,使其不被解释为特殊含义。
总之,使用单
引号
或
双引号
来表示字符串,要根据需要来选择,以便在不同的情况下获得所需的字符串解释行为。