您的位置:首页 > 运维架构 > Shell

shell变量学习记录

2012-06-03 01:28 344 查看
个人学习笔记,留着以后查阅,故没有做过多说明,

来自书籍《悦知文化·实战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
本文出自 “itnihao的运维技术博客” 博客,请务必保留此出处http://itnihao.blog.51cto.com/1741976/885775
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: