在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/