个人学习笔记,留着以后查阅,故没有做过多说明,
来自书籍《悦知文化·实战Linux Shell编程与服务器管理》(卧龙小三)
- #!/bin/bash
- #测试变量存在与否的基本用法
- #DEBUG=1
- [ -n ${DEBUG-'0'} ] && set -v
- #定义两个变量,用hostname获取当前主机名
- myhostname=$(hostname)
- myhostip=
- mydir=
- msge=
- msgg=msggisok
- #取消变量myhostip
- unset myhostip
- #变量引用,语法${待测变量-默认值},若变量不存在,则符合判断,以传回默认值作为处置
- #此处变量myhostname变量存在,故不显示data,myhostip变量前面已经取消,故显示’ip is not exist‘
- a=${myhostname-'data'}
- b=${myhostip-'"ip is not exist"'}
- #此处由于前面$mydir定义为空,值存在,故不传回默认值
- c=${mydir-'dir is null'}
- #此处的$count变量不存在,用=设置值为100
- d=${count:=100}
- #“-”变量不存在,就显示默认值
- e=${msge:-'变量不存在'}
- f=${msgf-:msg2}
- #变量存在,就显示真实的值
- g=${msgg:+真实值}
- echo $a $b $c $d $e $f $g
- #变量不存在,就显示错误,并显示设置的默认值
- z=${msgz:?msgz}
- #!/bin/bash
- NETWORK_PATH=$(/bin/ls /etc/rc.d/init.d/network)
- echo ${NETWORK_PATH}
- echo -e '语法${变量:位置起点},此处用":2"'
- network=${NETWORK_PATH:2}
- echo ${network}
- NETWORK_PATH2=$(/bin/ls /etc/rc.d/init.d/network)
- echo ${NETWORK_PATH2}
- echo -e '语法${变量:位置起点:长度}, 此处用"2:4"'
- network2=${NETWORK_PATH2:2:4}
- echo ${network2}
- #!/bin/bash
- #显示命令的本身
- echo $0
- #显示第二个输入
- echo ${@:1}
- echo ${@:2}
- echo ${@:3}
- echo ${@:4}
- echo ${@:5}
- echo ${@:3:2}
- A=abcd
- echo ${#A}
- #!/bin/bash
- file=$(/bin/ls /etc/rc.d/init.d/network)
- echo $file
- echo "\${变量#样式},由前面开始,删除最短匹配的字符串"
- a=${file#/*/}
- echo $a
- echo "\${变量##样式},由前面开始,删除最长匹配的字符串"
- b=${file##/*/}
- echo $b
- echo "\${变量%样式},由前面开始,删除最短匹配的字符串"
- c=${file%/*}
- echo $c
- echo "\${变量%%样式},由前面开始,删除最长匹配字符串"
- d=${file%%/*}
- echo $d
- echo "\${变量/样式/替换字符串},替换第一个匹配的字符串"
- e=${file/d/NEW_WORLD}
- echo $e
- echo "\${变量//样式/替换字符串},替换所有匹配的字符串"
- f=${file//d/NEW_WORLD}
- echo $f
- echo "\${变量/样式/},删除第一个符合样式的字符串"
- g=${file/./}
- echo $g
- echo "\${变量//样式/},删除所有符合样式的字符串"
- h=${file//./}
- echo $h
- echo "\${变量/#样式/},删除开头第一个符合样式的字符串"
- i=${file/#\//}
- echo $i
- I="AB,cd,ABCDAB"
- echo $I
- echo "\${变量/%样式/},删除结尾第一个符合样式的字符串"
- j=${I/%AB/}
- #获取变量名称列表
- AB='abcd'
- ABCD='efghi'
- echo $AB $ABCD
- dir_file="$AB$ABCD"
- echo "${!开头字符串@},把所以指定字符串开头的变量名称列出"
- echo ${!AB@}
- #获取数组索引列表
- NUM=(a b c d e f g)
- echo "${!数组变量[@],把数组变量的所有索引列出来}"
- k=${!NUM[@]}
- echo $k
- for i in "${!NUM[@]}"
- do
- echo "num $i:${NUM[$i]}"
- done
- #!/bin/bash
- PASSWD_PATH=$(ls /etc/passwd)
- PATH=${PASSWD_PATH:+'OK'}
- echo $PATH
- #!/bin/bash
- PS3="请选择:"
- select A in a b c d
- do
- echo $A $REPLY
- break
- done
- 三目运算
- a=1
- b=2
- echo $(($a==$b?0:1)) #显示结果为1
- echo $(($a!=$b?0:1)) #显示结果为0
详细解释,请参考此文http://blog.sina.com.cn/s/blog_77f8682501011o72.html