shell变量学习记录
个人学习笔记,留着以后查阅,故没有做过多说明,来自书籍《悦知文化·实战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
页:
[1]