Linux Shell 符号及变量

Linux Shell About 2,005 words

位置变量

运算符 解释
$1 获取第一个参数
$2 获取第二个参数
$n 获取第n个参数(n为数字)
${1} 获取第一个参数

预定义变量

运算符 解释
$0 获取脚本名称
$* 获取所有参数
$@ 获取所有参数
$# 获取参数个数
$$ 获取当前进程的pid
$! 获取上一个后台进程的pid
$? 获取上一个命令的执行结果,0表示成功

逻辑运算符

运算符 解释
-a 逻辑与,and
-o 逻辑或,or
!

文件比较运算符

运算符 解释 举例
-e 是否存在,exist [ -e /var/log/messages ]
-f 是否是文件,file [ -f /var/log/messages ]
-d 是否是文件夹,dir [ -d /var/log ]
-r 是否可读,read [ -r /var/log/messages ]
-w 是否可写,write [ -w /var/log/messages ]
-x 是否可执行,execute [ -x /var/log/messages ]
-nt 是否新于,new than [ /usr/local/nginx/nginx.conf -nt /etc/nginx/nginx.conf ]
-ot 是否旧于,old than [ /usr/local/nginx/nginx.conf -ot /etc/nginx/nginx.conf ]

算术比较运算符

运算符 解释 举例
-eq 相等,equal [ "$var" -eq 0 ]
-ne 不相等,not equal [ "$var" -ne 0 ]
-gt 大于,great than [ "$var" -gt 0 ]
-ge 大于等于,great equal [ "$var" -ge 0 ]
-lt 小于,less than [ "$var" -lt 0 ]
-le 小于等于,less equal [ "$var" -le 0 ]

字符串比较运算符

运算符 解释 举例
-z 判断字符串长度是否为0,zero [ -z "$var" ]
-n 判断字符串长度是否不为0,nonzero [ -n "$var" ]
= 判断两字符串是否相等 [ "$var" = "abc" ]
!= 判断两字符串是否不等 [ "$var" != "abc" ]

获取长度

  • #var

定义var=www.sina.com.cn

命令 解释 输出
${#var} 获取变量长度 15

变量内容删除

键盘上#$左边,%$右边,所以#从左往右删除,%从右往左删除。

定义var=www.sina.com.cn

#从左往右删除

  • #ww
  • #*c
  • ##*.
命令 解释 输出
${var#ww} 删除ww开头的
若删除sina则还是www.sina.com.cn
w.sina.com.cn
${var#*c} 删除到第一个c为止,包括c
最短匹配
om.cn
${var##*.} 删除到最后一个.为止,包括.
最长匹配,贪婪匹配
cn

%从右往左删除

  • %.*
  • %%.*
命令 解释 输出
${var%.*} 删除右边起第一个.及其右边(注意:*在后) www.sina.com
${var%%.*} 删除到右边起最后一个.及其右边 www

按索引和切牌你删除

  • :0:5
  • :5
命令 解释 输出
${var:0:5} 从第0个字符开始截取,取5位 www.s
${var:5} 去除前5位 ina.com.cn

变量内容替换

  • /w/x
  • //./#

定义var=www.sina.com.cn

命令 解释 输出
${var/w/x} 替换一个wx xww.sin.com.cn
${var//./#} 替换所有.# www#sina#com#cn

变量赋值

  • var-aaa
  • var:-aaa

不定义var1

定义var2=222

定义var3=

命令 解释 输出
${var1-aaa} 设置var1默认值为aaa
var1没有初始化,所以赋值为aaa
aaa
${var2-bbb} 设置var2默认值为bbb
var2有初始化值222,所以不再赋值
222
${var3-ccc} 设置var3默认值为ccc
var3有初始化值为空,所以不再赋值
空值
${var3:-ccc} 设置var3默认值为ccc
var3有初始化值为空,所以赋值为ccc
ccc
Views: 2,944 · Posted: 2019-08-09

————        END        ————

Give me a Star, Thanks:)

https://github.com/fendoudebb/LiteNote

扫描下方二维码关注公众号和小程序↓↓↓

扫描下方二维码关注公众号和小程序↓↓↓


Today On History
Browsing Refresh