资源
Shell中字符串、数值的比较linux shell数值比较和字符串比较
shell 数组遍历的3种方法
Shell位置参数(命令行参数)Shell 教程Shell脚本的超详细讲解(推荐!)
在shell中字符串与数值的比较方法是不同的,要注意区分
整数比较:
-eq 等于,如:if [ "$a" -eq "$b" ]
-ne 不等于,如:if [ "$a" -ne "$b" ]
-gt 大于,如:if [ "$a" -gt "$b" ]
-ge 大于等于,如:if [ "$a" -ge "$b" ]
-lt 小于,如:if [ "$a" -lt "$b" ]
-le 小于等于,如:if [ "$a" -le "$b" ]
大于(需要双括号),如:(("$a" > "$b"))
>= 大于等于(需要双括号),如:(("$a" >= "$b"))
字符串比较:
= 等于,如:if [ "$a" = "$b" ]
== 等于,如:if [ "$a" == "$b" ], 与=等价
注意:==的功能在[[]]和[]中的行为是不同的,如下:
1 [[ $a == z* ]] # 如果$a以"z"开头(模式匹配)那么将为true
2 [[ $a == "z*" ]] # 如果$a等于z*(字符匹配),那么结果为true
3
4 [ $a == z* ] # File globbing 和word splitting将会发生
5 [ "$a" == "z*" ] # 如果$a等于z*(字符匹配),那么结果为true
!= 不等于,如:if [ "$a" != "$b" ], 这个操作符将在[[]]结构中使用模式匹配.
大于,在ASCII字母顺序下.如:
if [[ "$a" > "$b" ]]
if [ "$a" > "$b" ] 在[]结构中">"需要被转义.
-z 字符串为"null".就是长度为0.
-n 字符串不为"null"
SHELL下的数字比较及计算举例
比较:
方法一: if [ ${A} -lt ${B} ]; then ...
这是最基本的比较方法,使用lt(小于),gt(大于),le(小于等于),ge(大于等于),优点:还没发现;缺点:只能比较整数,使用lt,gt等不直观
方法二: if ((${A} $2){exit 1}') then ...
这是使用awk比较,优点:可以比较小数;缺点:表达式太复杂,难记
方法四: if (echo ${A} - ${B} | bc -q | grep -q "^-"); then ...
这是使用bc计算比较,优点:可以比较小数;缺点:表达式更复杂,难记
计算:
方法一:typeset C=$(expr ${A} + ${B});
SHELL中的基本工具,优点:方便检测变量是否为数字;缺点:只能计算整数,且只能计算加减法,不能计算乘除法
方法二:let "C=${A}+${B}"; 或 let "C=A+B"
内嵌命令计算,优点:能计算乘除法及位运算等;缺点:只能计算整数
方法三:typeset C=$((A+B))
CShell风格的计算,优点:能计算乘除法及位运算等,简介,编写方便;缺点:不能计算小数
方法四:typeset C=${echo ${A} ${B} | awk '{print $1+$2}')
使用awk计算,优点:能计算小数,可以实现多种计算方式,计算灵活;缺点:表达式太复杂
方法五:typeset C=${echo ${A} + ${B} | bc -q)
使用awk计算,优点:能计算小数,计算方式比awk还多,计算灵活;缺点:表达式太复杂,小数点后面的位数必须使用scale=N来设置,否则可能会将结果截断为整数
shell数组的基本知识请参阅我的上一篇博客shell 数组
首先创建一个数组 array=( A B C D 1 2 3 4)
1.标准的for循环
for(( i=0;i
#!/bin/bash
# _Command('scrcpy-x21', 'scrcpy --window-x 0 --window-y 0 -s 98badcb9'),
# _Command('scrcpy-google', 'scrcpy --window-x 0 --window-y 0 -s 8AWX10UKL'),
# 弄一个数组吧
array=("x21" "scrcpy --window-x 0 --window-y 0 -s 98badcb9" "google" "scrcpy --window-x 0 --window-y 0 -s 8AWX10UKL")
# 遍历数组
echo ${#array[@]}
echo "-----"
echo ${#array[*]}
# 遍历输出0到10
# #!/bin/bash
# for i in {0..10}; do
# echo $i;
# done;
ge_search_result.none-task-blog-2~all~sobaiduweb~default-0-116079747&spm=3001.4430
#java把for循环的变量输出,shell for循环、循环变量值付给其他shell脚本
#shell for 循环:
# #!第一种写法 类似C、Java
# for ((i=1; i
数组
定义一个数组方式如下:
数组名=(元素1 元素2 元素3 ... 元素n)
指定数组对应下标的元素进行赋值:
数组名[下标]=值
同时指定多个数组元素进行赋值:
数组名=([下标1]=值1 [下标2]=值2 ... [下标n]=值n)
引用数组对应下标的元素:
${数组名[下标]}
遍历数组元素
使用for(或while循环)循环遍历数组元素:
#!/bin/bash
a=(1 2 3 4 5 6)
for((i=0; i
获取数组长度
# 我们可以使用#来获取数组长度,需要注意的是在shell脚本中我们越界访问数组时是不会报错的。
#!/bin/bash
a=(1 2 3 4 5 6)
echo ${a[*]}
echo "a len: ${#a[*]}"
我们先使用其获取数组中的元素后使用#获取元素个数即可。
合并数组
我们可以如下进行拼接:
#!/bin/bash
a=(1 2 3 4 5 6)
b=("hello" "zhaixue.cc")
c=(${a[*]} ${b[*]})
这样我们就将两个数组拼接起来了。
删除数组元素
删除数组元素
如果我们想要删除某个数组元素,具体代码如下:
#!/bin/bash
a=(1 2 3 4 5 6)
echo ${a[*]}
echo "a len: ${#a[*]}"
unset a[5]
echo ${a[*]}
echo "a len: ${#a[*]}"
执行结果如下:
我们如果要删除整个数组,可以执行unset a,举例代码如下:
#!/bin/bash
a=(1 2 3 4 5 6)
echo ${a[*]}
echo "a len: ${#a[*]}"
unset a
echo ${a[*]}
echo "a len: ${#a[*]}"
变量传参数
相关的变量含义为:
变量 |
含义 |
$0 |
代表执行的文件名 |
$1 |
代表传入的第1个参数 |
$n |
代表传入的第n个参数 |
$# |
参数个数 |
$* |
以一个单字符串显示所有向脚本传递的参数。 |
$@ |
与$*相同,但是使用时加引号,并在引号中返回每个参数 |
$$ |
脚本运行的当前进程号 |
$! |
后台运行的最后一个进程的ID |
$? |
显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误。 |
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net
机房租用,北京机房租用,IDC机房托管, http://www.fwqtg.net
文章目录 前言 视频教程 1、安装OpenSSH 2、vscode配置ssh 3. 局域网测试连接远程服务器 4. 公网远程连接 4.1 ubuntu安装cpolar内网穿透 4.2 创建隧道映射 4.3 测试公网远程连接 5. 配置固定TCP端口地址 5.1…