相关文章推荐
逃课的登山鞋  ·  小谈PNG转SVG的方法 ...·  11 月前    · 
刚毅的红金鱼  ·  Android Paint画笔 - 简书·  1 年前    · 
在shell中传入带双引号的变量
-d ‘{
“username”:“user”,
“role”:[“role”]
}’
引入变量a
-d ‘{
“username”:"$a",
“role”:[“role”]
}’
出错,JSON格式报错,因为变量带引号被当做字符串标识符
引号转义
-d ‘{
“username”:\"$a\",
“role”:[“role”]
}’
出错,JSON格式报错,需要将变量标识为文本
嵌套引号
-d ‘{
“username”:“\"$a\"”,
“role”:[“role”]
}’
正确,但是执行结果出错,变量被当做字符串传入
正确执行
-d ‘{
“username”:‘\"$a\"’,
“role”:[“role”]
}’
将外部的双引号换成单引号解决两个双引号嵌套内部双引号被识别为文本的问题
echo输出 echo 单 双引号 的区别, 双引号 支持转义, 开头的 变量 会被自动替换,PWD本身就是特殊 变量 ,当前的路径,单 引号 则就是输出。例子:echo”开头的 变量 会被自动替换,PWD本身就是特殊 变量 ,当前的路径,单 引号 则就是输出。 echo “开头的 变量 会被自动替换,PWD本身就是特殊 变量 ,当前的路径,单 引号 则就是输出。例子:echo”PWD” /Users/qinqi/Downloads echo ‘$PWD’ 预定义 变量 echo $PWD 当前路径 echo $USER 当前是谁 echo $HOME 当前主目录 echo ~ 波浪线是HOME的简写 用户创建得 变量 仅可用于当前 Shell Shell 默认读取不到父 Shell 定义得 变量 ,为了把 变量 传递给子 Shell ,需要使用export命令,这样输出得 变量 ,对于子 Shell 来说就是环境 变量 。由于反斜杠在单 引号 里面变成了普通字符,所以如果单 引号 ,还要使用单 引号 ,不能使用转义,需要在外层的单 引号 前面加上一个美元符号(声明为整数,覆盖以后,Bash 不会报错,但会赋以不确定的值,上面的例子 可能输出0,也可能输出的是3。单 引号 用于保留字符的字面含义,各种特殊字符在单 引号 里面,都会变为普通字符,比如星号( 最近在Kaldi里试图输出N-Best的每一个sentence的文本还有声学模型以及语言模型的分数,但是在使用 Shell 命令的时候,发现单 引号 里的 变量 无法 引用 s5=/data3/ots_use_libri_asr001_003/s5 exp=exp/nnet2_online/nnet_a_online graph=graph_tgsmall num=1 nbest-to-linear ark:n... Shell 变量 双引号 引起来, 双引号 就是表示这个 双引号 内为一个字符串。 对于 if 条件语句里所有的字符串的比较时,最好是在 变量 的外面加上 双引号 。特别是 if -n 判断字符串是否为null时候(null意思就是字符串长度为0),一定要加上 双引号 。否则,像下面的case就会出错。 if [ -n $a ] 等价于 if[ -n ] 对于字符串长度为0时,相当于没有参数 当要 引用 一个 变量 的值时,一般推荐使用 双引号 。使用 双引号 除了 变量 名[2]前缀($)、后引符(`)和转义符(\)外,会使 shell 不再解释 引号 其它所有的特殊字符。[3]用 双引号 时$仍被当成特殊字符,允许 引用 一个被 双引号 引起的 变量 ("$variable"),那也是说$variable会被它的值所代替。用 双引号 还能使句子不被分割开.[4]一个参数用 双引号 引起来能使它被看做一个单元,这样即使参数里面包含有空白字符也不会被 shell 分割开了。1#!/bin/bash3。... 如果想在 shell 字符串引入 变量 变量 值为字符串),需要在 双引号 对引入的 变量 值加入单 引号 grep -Po '{"id":'${id}'.*?hello"}' hello.txt 执行结果查看的命令是grep -Po '{"id":123.*?hello"}' hello.txt 发现123其实是整数。如果123=>"123",需要在'${id}'外层引入 双引号 "'${id}'",即grep -Po '{"id":"'${id}'".*?hello"}',执行后 grep -Po '{... 文章目录什么时候用 双引号 $要不要跟{}字符串 变量 怎么才能被正确解析? 什么时候用 双引号 当参数值本身就带有空格时,如果不加 双引号 把参数值括起来,那么这个参数值可能会被扩展为多个参数值,而丢失原本的完整值。 建议传参时每个参数都使用 双引号 括起来。 比如在脚本 执行bin/hive -e命令 假设:sql="select * from table group by id;" 不能使用bin/hive -e $sql,而要使用bin/hive -e "$sql"。因为第一种方式相当于执行bin/