shell学习

字符的处理:
1. 计算字符串长度
echo “$str”|awk ‘{print length($0)}’
expr length “$str”
echo “$str”|wc -c

2. 判断字符串是否为空
if [ "$str" = "" ]
if [ x"$str" = x ]
if [ -z "$str" ]

3
${file#*/}:拿掉第一條 / 及其左邊的字串:dir1/dir2/dir3/my.file.txt
${file##*/}:拿掉最後一條 / 及其左邊的字串:my.file.txt
${file#*.}:拿掉第一個 . 及其左邊的字串:file.txt
${file##*.}:拿掉最後一個 . 及其左邊的字串:txt
${file%/*}:拿掉最後條 / 及其右邊的字串:/dir1/dir2/dir3
${file%%/*}:拿掉第一條 / 及其右邊的字串:(空值)
${file%.*}:拿掉最後一個 . 及其右邊的字串:/dir1/dir2/dir3/my.file
${file%%.*}:拿掉第一個 . 及其右邊的字串:/dir1/dir2/dir3/my
記憶的方法為:

# 是去掉左邊(在鑑盤上 # 在 $ 之左邊)
% 是去掉右邊(在鑑盤上 % 在 $ 之右邊)
單一符號是最小匹配﹔兩個符號是最大匹配

正则表达式式:
http://hi.baidu.com/nxswxxg/blog/item/b96fddd1907856db562c8423.html


#!/bin/bash
#liaolj 测试

#n=1
#: $((n++))
#echo $n

# 区别按位反与按位非的区别
#n=1
#let n=$((~n))
#echo "按位反:"$n #-2
#let n=$((!n))
#echo "按位非:"$n #0

# 进制
# 其他进制: BASE#NUMBER BASE(2-64之间)
#let n="32#77"
#echo $n #231

#let "b64 = 4#@_"
#echo $b64

#求字符串长度
#liaolj=ynwuupl
#echo ${#liaolj}
#echo `expr length $liaolj`
#echo `expr "$liaolj" : '.*'`

#匹配字符串开头的子串长度
#expr match "$string" '$substring' substring是一个正则表达式
#expr "$string" : '$substring' 单引号和双引号是一样的
#liaolj=ynwuupl
#echo `expr match "$liaolj" ".*"`
#echo `expr "$liaolj" : '.*'`

#索引
#expr index $string $substring
#在字符串$string中所匹配到的$substring第一次出现的位置
#liaolj=ynwuupl
#echo `expr index "$liaolj" uu`
#echo `expr index $liaolj uu` #没有引号也是可以的

#提取子串
#${string:position}
#在string中从位置$position开始提取子串
#如果string是"*"或者"@",那么将会提取从位置position开始的位置参数
#${string:position:length}
#在string中从位置position开始提取length长度的子串
#liaolj=ynwuupl
#echo ${liaolj:3} #uupl
#echo ${liaolj:3:2} #uu
#echo ${liaolj:-3} #ynwuupl
#echo ${liaolj: -3} #upl
#echo ${liaolj:(-3)} #upl
#echo ${*:0} #显示第0个参数后面的所有参数
#
#expr substr $string $position $length
#liaolj=ynwuupl
#expr substr $liaolj 3 5 #length参数必须有
#
#expr match "$string" '\($substring\)'
#expr "$string" : '\($substring\)'
#liaolj=ynwuupl
#expr match $liaolj '\(...[uU].\)' #ynwuu
#
#expr match "$string" '.*\($substring\)'
#expr "$string" : '.*\($substring\)'
#从string的结尾提取substring,substring是正则表达式

#子串削除
#${string#substring}
#从string的开头位置截掉最短匹配的substring
#${string##substring}
#从string的开头位置截掉最长匹配的substring
#liaolj=abcABC123ABCabc
#echo ${liaolj#a*C} #123ABCabc
#echo ${liaolj##a*C} #abc
#
#${string%substring}
#从string的结尾位置截掉最短匹配的substring
#${string%%substring}
#从string的结尾位置截掉最长匹配的substring
#liaolj=abcABC123ABCabc
#echo ${liaolj%b*c} #abcABC123ABCa
#echo ${liaolj%%b*c} #a

#子串替换
#{string/substring/replacement}
#使用replacement来替换第一个匹配的substring
#{string//substring/replacement}
#使用replacement来替换所有匹配的substring
#liaolj=ynwuupl
#echo ${liaolj/u/p} #ynwupupl
#echo ${liaolj//u/p} #ynwupppl
#
#${string/#substring/replacement}
#如果substring匹配string的开头号部分,那么就用replacement来替换substring的开头部分
#{string/%substring/replacement}
#如果substring匹配string的结尾部分,那么就用replacement来替换substring的结尾部分

#使用awk来处理字符串
#bash脚本也可以调用awk的字符串操作功能来代替它自已的内置功能


#参数替换
#${parameter}
#${parameter-default},${parameter:-default}
#echo ${1-liaolj} #liaolj
#echo $1 #liaolj
#
#{parameter=default},${parameter:=default}
#如果变量parameter没声明,那么就用default的值
#echo ${username=`liaolj`} #报错 ``其中放得是命令
#echo ${1=`liaolj`} #报错
#echo ${username=liaolj} #liaolj
#echo ${a:=liaolj}
#${parameter+alt_value},${parameter:+alt_value}
#如果parameter被声明就用alt_value,否则就用null
#遝cho ${1+ynw} #如果传参时为ynw,否则为nul
#
#${parameter?err_msg},${parameter:?err_msg}
#如果parameter已声就用原来的值,如果没有声明,打印错误信息
#echo ${1?error:你好懒!}
#: ${1?"Usage: $0 ARGUMENT"}

#进制之间转换
#echo 'obase=2; ibase=10; 255' | bc


#echo; echo "Hit a key, then hit return."
#read Keypress
#case "$Keypress" in
#[[:lower:]] ) echo "Lowercase letter";;
#[[:upper:]] ) echo "Uppercase letter";;
#[0-9] ) echo "Digit";;
#* ) echo "Punctuation, whitespace, or other";;
#esac # 允许字符串的范围出现在[中括


#a=`echo "HELLO" | tr A-Z a-z`
#echo $a

#a=`echo "ynwuupl" | tr -d u`
#echo $a

#echo -n "This string splits
# 17 on two lines."

baseName=app
today=`date +%y%m%d`
echo ${baseName}${today}.img
echo appp


grep命令:http://fanqiang.chinaunix.net/system/linux/2007-03-15/5110.shtml
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值