如何为网站和应用程序添加充值余额功能以通过工业核信息化部网站备案系统进行备案?

摘要:网站和app可以做充值余额功能,工业核信息化部网站备案系统,徐州网站建设招聘网,企业网站建设开发四个阶段文章目录[]和test[]和[[]]区别总结参考[]和test Shell中的 test 命令用于检查某个条件是否成立&
网站和app可以做充值余额功能,工业核信息化部网站备案系统,徐州网站建设招聘网,企业网站建设开发四个阶段文章目录[]和test[]和[[]]区别总结参考[]和test Shell中的 test 命令用于检查某个条件是否成立#xff0c;它可以进行数值、字符和文件三个方面的测试 test常用于 if #xff0c;作为判断条件#xff0c;if test等价于 if [ ]#xff0c;因此#xff0c;test和[] 内的内… 文章目录[]和test[]和[[]]区别总结参考[]和test Shell中的 test 命令用于检查某个条件是否成立它可以进行数值、字符和文件三个方面的测试 test常用于 if 作为判断条件if test等价于 if [ ]因此test和[] 内的内容完全可以直接互换都支持 []的语法可以参见 【Linux】shell中运算符(expr整数、字符串) 中的示例 test 语法参见 Shell test 命令 当然test也可以单独执行如果当前目录存在hello.sh文件则会获得返回值 0 [rootlinuxforliuhj test]# test -f hello.sh [rootlinuxforliuhj test]# echo $? 0上面命令等价于下面语法 [rootlinuxforliuhj test]# [ -f hello.sh ] [rootlinuxforliuhj test]# echo $? 0因此 [] 就是一个内置命令有返回值而不是一个符号[[]] 就是一个符号不能单独存在依赖 if 执行结果0 表示 true 1 表示false []和[[]]区别 [] 或 [[]] 中$a 表示变量a如果没有$符号默认为字符串即 [[ a b ]]等价于 [[ ‘a’ ‘b’ ]] 先有[] 语法并内置于linux系统后来才有 [[]] 起初不是所有的都支持 [[]] 当然后来基本上都支持了 [] 语法 都可以由 [[]] 替代并且后者功能更丰富。二者大部分语法都相同但是默认情况下 [] 识别的运算符比较少需要使用转义字符等下面会详解列出不同之处。 二者都建议在表达式和括号自身使用空格 避免出错 if [[ $1 ! start $1 ! stop ]]加空格一定不会报错不加可能会报错 当目标是数字类型时二者都可以使用 -eq进行数字比较 当使用-eq并且类型被错误的赋值为非数字时会提示错误这样便于检查语法错误。 示例 a10 b20if [ $a -eq $b ] thenecho $a -eq $b : a 等于 b elseecho $a -eq $b: a 不等于 b fi当目标是数字类型时都支持、等 数字比较符但是都 不建议使用建议使用 -eq语法 但是要注意的是 [] 需要增加转义字符原因是[]默认 不识别特殊字符而[[]] 天生支持 a10 b20 if [ $a $b ] //单中括号执行报错不识别 号 thenecho $a $b : a b elseecho $a $b: a b fi if [[ $a $b ]] //双中括号执行成功 thenecho $a $b : a b elseecho $a $b: a b fi if [ $a \ $b ] //转义字符执行成功 thenecho $a $b : a b elseecho $a $b: a b fi 都可以使用 、!进行字符串比较 需要注意的是当字符串类型且有空格时[]需要对字符串加引号而[[]] 可加可不加 #可以在终端命令行直接输入命令分号是多条命令的分割符xa b; [ $x a b ] //当字符串变量的值含有空格时需要小心执行会报错 [: too many arguments 错误原因是把空格当做分割符了 xa b; [ $x a b ] //添加引号后执行成功 xa b; [[ $x a b ]] //天生就可以执行成功当字符串类型且含有特殊字符例如*号时[]会报错而[[]] 不会 x*; [ $x a b ] // bash: [: too many arguments x*; [[ $x a b ]] // 执行成功在逻辑表达式语法稍有不同[] 使用 -a、-o 分别表示与、或 关系 [[]]使用 、 ||表示与 、或关系 单中括号示例 if [ $a -lt 100 -a $b -gt 15 ] thenecho $a 小于 100 且 $b 大于 15 : 返回 true elseecho $a 小于 100 且 $b 大于 15 : 返回 false fi双中括号示例 [[ a a b b ]]单中括号不支持 语法即使添加转义字符也不行可以再外层使用 [ a a b b ] //错误[ a a ] [ b b ] //可以改造成这样外部通过 在这里插入代码片 进行连接逻辑运算符的优先级 优先级顺序 按照 ()逻辑 || 并且单[] 不识别 小括号()除非加转义字符 unset a;unset b; //清除a b 变量防止影响执行结果[[ (a a || a b) a b ]];echo $? //注意是双中括号最终结果为1 false 先计算(a a || a b) 得到结果true 然后再计算 true a b[[ a a || a b a b ]];echo $? // 注意是双中括号最终结果为0 true先计算右边 a b a b得到false然后计算 aa || false[ ( a a ) ] //报错bash: syntax error near unexpected token a即单括号不识别括号 [ \( a a -o a b \) -a a b ] //没有语法错误[[]]支持字符串模糊匹配而[]不支持 注意 右侧不加引号时支持通配符左边是字符串顺序不能颠倒 要想屏蔽通配符需要加 转义字符 如果右侧是带引号的此时就是普通字符串 * 可以使用星号代替零个、单个或多个字符; ? 问号代替一个字符必须有一个 当是号时通配符表示是否以满足xxx条件 [[ ab a? ]]; echo $? //打印 0 true因为 ?被当做通配符 [[ a? ab ]]; echo $? //打印 1 false颠倒了通配符因为失效了在左侧就是普通字符串等价于 [[ a? ab ]]; echo $? [[ ab a\? ]]; echo $? //打印 1 false因为加了转义字符右侧通配符就是字符串了[[ ab ~ ab? ]]; echo $? //打印 1 false 因为加了引号就是普通字符串当然通配符也可以用在前面 [[ ab ?b ]];echo $? //打印 0 true并且特别要注意的是[] 中右侧的?匹配符号会被当做当前目录下的文件名称进行匹配而不是字符串匹配了 *匹配符直接报错前文得知不管在左侧当做普通字符串也报错 因此建议禁用 通配符 rm -f ab;touch ab;[ ab a? ]; echo $? # 打印 0 true ,此时语法等价于 “是否当前目录存在ab这个文件并且以a开头 ?” 比较别扭也就是说 ab不再是字符串而是当前目录的文件名称 rm -f ab;[ ab a? ]; echo $? # 打印 1 falserm -f ab;touch ab;[ ab a* ]; echo $? # *号匹配符直接报错[[]]支持~字符串模糊匹配而[]不支持 上一小节是用进行判断也可以用~进行模糊判断表示不满足条件注意与!进行区别 [[ ab ~ ab? ]] ; echo $? # 打印 0 true而[] 压根不支持~直接报错 [ a ~ a ] # 报错 bash: [: ~: binary operator expected 总结 尽量不用[]建议使用 [[]] 参考 linux shell if的[]和[[]] [What is the difference between the Bash operators [[ vs vs ( vs ((?