shell [ -n \"\$$var1\$$var2\" ] 求教啥意思?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了shell [ -n \"\$$var1\$$var2\" ] 求教啥意思?相关的知识,希望对你有一定的参考价值。
这是shell测试表达式,用于判断字符串是否非空。如果非空,返回true,否则false。前面加了反斜杠的 $ 符号被转义,失去其原本的功能(求变量值),因此不作展开。
前面没有反斜杠的 $ 符号保持其求值的功能,因此 $var1 和 $var2 的值被代入字符串。
假设 var1=1, var2=2
那么这个测试表达式展开后变为:
[ -n "$1$2" ]
由于双引号也被转义,所以展开后被保留。这样,还可以继续展开,最终将位置参数$1和$2 (脚本或函数的传入参数)的值代入字符串,并判断表达式是否非空。 参考技术A 判断 这个临时产生的目录 \"\$$var1\$$var2\" 是否存在追问
这个貌似不是目录
追答这个好像应该被解释成 判断 $$var1$$var2 这个字符串非 0
\$解释成$ $$在系统特殊字符里代表是PID号 $$var1
这个我也有点没看懂。在等等看看有没有大手解释一下吧。
shell 中的 特殊变量类型数组
shell 中两种数据类型:一是数值类型,二是字符串类型;虽然shell本身是弱类型的,但也可以这么区分。
如果我们需要在shell中一个变量中存储多个值,那么就需要一个更方便的类型数组
数组在shell中是用括号括起来每个值之间用空格隔开就定义了一个数组
a=(1 2 3 4 5)
a=("a" "b" "c" "d" "e")
a=(1 "a" 2 "b")
都是可以的
数组的运用
得到数组的长度:${#a[*]} 或者${#a[@]}
得到数组中所有的值:${a[*]} 或者${a[@]}
得到数组中指定值:${a[digit]} #digit表示数字下标,也就是数组每个元素的位置从0开始计数
得到数组中的连续的位置的值:${a[*]:0:3} 这里是使用了字符串截取的方法 ${var:开始位置:长度}的方法
修改某个数组中值a[下标]=值
利用for循环遍历数组
for i in ${a[@]}; do
echo i
done
删除数组中某一个值
unset a[下标]
以上是关于shell [ -n \"\$$var1\$$var2\" ] 求教啥意思?的主要内容,如果未能解决你的问题,请参考以下文章
在VB2005中怎么才能打开纸牌游戏 sell("C:\windows\system32\sol.exe", AppWinStyle.NormalFocus