Linux Shell符号及变量

LinuxShell大约 2028 字

位置变量

运算符解释
$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}替换一个wxxww.sin.com.cn
${va 替换所有.#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
阅读 380 · 发布于 2019-08-09

————        END        ————

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

昵称:
随便看看换一批