下边shell语言中eval,又加单引号,又加双引号,有什么含义,单双引号有什么区别?
eval"$dbvar"'_answer_'"$id"'="$value"'eval'answers="$'"$dbvar"'_answers"'eval"$dbvar"...
eval "$dbvar"'_answer_'"$id"'="$value"'
eval 'answers="$'"$dbvar"'_answers"'
eval "$dbvar"'_answer_'"$id"'="$value"' 展开
eval 'answers="$'"$dbvar"'_answers"'
eval "$dbvar"'_answer_'"$id"'="$value"' 展开
1个回答
展开全部
命令前加eval是使shell在执行命令行之前扫描它两次(先取$里的变量值,再赋值)。
单引号和双引号都能关闭shell对特殊字符的处理。不同的是,双引号没有单引号严格,单引号关闭所有有特殊作用的字符,而双引号只要求shell忽略大多数,具体的说,就是①美元符号②反引号③反斜杠,这3种特殊字符不被忽略。 不忽略美元符号意味着shell在双引号内部也进行变量名替换。
双引号就是防止将变量名后面的字符串也当作变量名的一部分,你这命令里的单引号确实没必要加(但=前的双引号必须得加),我都试过了,加了也不影响,应该起个强调作用,个人敲命令的习惯。
单引号和双引号都能关闭shell对特殊字符的处理。不同的是,双引号没有单引号严格,单引号关闭所有有特殊作用的字符,而双引号只要求shell忽略大多数,具体的说,就是①美元符号②反引号③反斜杠,这3种特殊字符不被忽略。 不忽略美元符号意味着shell在双引号内部也进行变量名替换。
双引号就是防止将变量名后面的字符串也当作变量名的一部分,你这命令里的单引号确实没必要加(但=前的双引号必须得加),我都试过了,加了也不影响,应该起个强调作用,个人敲命令的习惯。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询