linux中的bash操作符

1.字符串操作符(替换操作符)

${var:-word}: 如果var 存在且不为空, 返回它的值, 否则返回word
${var:=word}: 如果var 存在且不为空, 返回它的值, 否则将word 赋给var, 返回它的值
${var:+word}: 如果var 存在且不为空, 返回word, 否则返回空
${var:?message} 如果var 存在且不为空, 返回它的值,
否则显示“-bash: var: message”, 然后退出当前命令或脚本
${var:offset[:length]} 从offset 位置开始返回var 的一个长为length 的子串,
若没有length, 则默认到var 串末尾

ct@ehbio:~$ echo ${var:?message}
-bash: var: message
ct@ehbio:~$ var='sheng xin bao dian'
ct@ehbio:~$ echo ${var:6:3}
xin

 2. 模式匹配操作符

${var#pattern} 从var 头部开始, 删除和pattern 匹配的最短模式串, 然后返回剩余串
${var##pattern} 从var 头部开始, 删除和pattern 匹配的最长模式串, 然后返回剩余串, basename path =
${path##*/}
${var%pattern} 从var 尾部开始, 删除和pattern 匹配的最短模式串, 然后返回剩余串, dirname path = ${path%/*}
${var%%pattern} 从var 尾部开始, 删除和pattern 匹配的最长模式串, 然后返回剩余串
${var/pattern/string} 用string 替换var 中和pattern 匹配的最长模式串

ct@ehbio:~$ var='sheng xin bao dian good'
ct@ehbio:~$ echo ${var/good/great}
sheng xin bao dian great

#比如获取fastq 文件的名字部分
for i in `ls *_1.fq.gz`; do j=${i/_1.fq.gz/}; echo "$j"; done

3.Shell 中条件和test 命令

Bash 可以使用[ … ] 结构或test 命令测试复杂条件
格式: [ expression ] 或test expression
返回一个代码, 表明条件为真还是为假, 返回0 为真, 否则为假。
注: 左括号后和右括号前空格是必须的语法要求

(1). 文件测试操作符
-d file: file 存在并且是一个目录
-e file: file 存在
-f file: file 存在并且是一个普通文件
-g file: file 存在并且是SGID(设置组ID) 文件
-r file: 对file 有读权限
-s file: file 存在并且不为空
-u file: file 存在并且是SUID(设置用户ID) 文件
-w file: 对file 有写权限
-x file: 对file 有执行权限, 如果是目录则有查找权限
-O file: 拥有file
-G file: 测试是否是file 所属组的一个成员
-L file: file 为符号链接
file1 –nt file2: file1 比file2 新

file1 –ot file2: file1 比file2 旧

ct@ehbio:~$ touch older
ct@ehbio:~$ touch newer
ct@ehbio:~$ if test -e older; then echo "older esists"; fi
older esists
ct@ehbio:~$ if test -s older; then echo "older is unempty"; fi
ct@ehbio:~$ if [ -s older ]; then echo "older is unempty"; fi

(2).字符串操作符

str1=str2 str1 和str2 匹配

str1!=str2 str1 和str2 不匹配
str1>str2 str1 大于str2
-n str str 的长度大于0(不为空)-z str str 的长度为0(空串),常用于判断必须的命令行参数是否传入

(3)整数操作符(ge: great equal; gt: great than)

var1 –eq var2 var1 等于var2
var1 –ne var2 var1 不等于var2
var1 –ge var2 var1 大于等于var2
var1 –gt var2 var1 大于var2
var1 –le var2 var1 小于等于var2
var1 –lt var2 var1 小于var2

if (( 3>2 )); then echo 'TRUE'; fi
TRUE

(4)逻辑操作符

!expr 对expr 求反expr1 && expr2 对expr1 与expr2 求逻辑与, 当expr1 为假时不再执行expr2
expr1 || expr2 对expr1 与expr2 求逻辑或, 当expr1 为真时不再执行expr2

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值