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

shell脚本编程部分技巧总结

2011-08-27 14:51 746 查看
shell脚本编程部分技巧总结

今天看脚本,发现有好多不懂的地方,于是查找资料,总结了一下。

1、

${var:-word} //如果var定义了,就使用var,如果没有定义,则使用后面word的值

如:下面的脚本,如果输入,则显示输入的信息.如果不输入直接回车,则显示abc、但是这时候INT的值仍然是空的。

#!/bin/bash

read -p "please input the word: " INT

A=${INT:-abc}

echo $INT

echo $A

此时输入hello则显示

hello

hello

此时如果直接点回车

//空

abc

2、

${var:+word} //如果var定义了,就使用word这个值,如果没有定义,则显示为空

#!/bin/bash

read -p "please input the word: " INT

A=${INT:+abc}

echo $INT

echo $A

此时如果输入hello

hello

abc

此时如果不输入直接回车

//空

//空

3、

${var:=word} //这时候如果输入,则显示输入的信息;如果不输入则显示abc,这时候INT的值被赋值为abc。

#!/bin/bash

read -p "please input the word: " INT

A=${INT:=abc}

echo $INT

echo $A

如果输入hello则输出结果为

hello

hello

如果不输入直接回车

abc //此时INT被赋值为abc

abc

4、

${INT:?error} //此时如果输入则显示输入信息,如果不输入,则显示错误信息并退出程序。

#!/bin/bash

read -p "please input the word: " INT

A=${INT:?error}

echo $INT

echo $A

如果输入hello则显示

hello

hello

如果不输入直接回车

则输出错误信息。并推出

5、

函数的变量类型,局部和全局变量。



#!/bin/bash

A=3 //此时定义的A=3是全局变量,在整个脚本中有效

FUN() {

local A=6 //此时定义本地变量A=6只在函数内部有效

A=$[$A+1]

echo "it's: $A"

}

FUN

echo $A

输出结果为

it's:7

3

declare -i A=2同样可以说明A是整形且A=2

declare -r B=3变量为3且不能撤销

declare -x 声明一个变量为环境变量

6、

如,截取字符串

#!/bin/bash

FILENAME='/var/log/maillog'

echo ${FILENAME#*/}

echo ${FILENAME##*/}

echo ${FILENAME%/*}

echo ${FILENAME%%/*}

显示的结果为

var/log/maillog

maillog

/var/log

//空

不多解释,自己体会一下就会明白

7、

数组

定义数组

declare -a A

初始化数组的几种方式

1、单独赋值

names[1]=alice

names[0]=hatter

names[2]=duchess

2、

names=([2]=duchess [1]=alice [0]=hatter) //小括号里面值与值中间有空格

3、

names=(alice hatter duchess)

4、

names=(alice [5]=hatter duchess) //表示此数组有7个值,第1,2,3,4的值没有定义

如:这里写一个脚本,数组里面是/var下的文件名,现在我想随机取才出里面的几个文件名。

#!/bin/bash

read -p "please input the number you want to choice: " NOM

declare -i I=0

for FILE in `ls /var`;do

FILENAME[$I]=$FILE //给数组赋值

let I++

done

echo ${FILENAME[*]} //这两行是显示数组的值,不同的用法

echo ${FILENAME[@]}

echo ${#FILENAME[*]} //下两行是统计个数

echo ${#FILENAME[*]}

declare A=1

while [ $A -le $NOM ]; do

INDEX=$[$RANDOM%20] //这里的20是对20取模

let A++

echo ${FILENAME[$INDEX]}

done

当你执行此脚本的时候就会把所有的文件名输出2次,并输出2次文件的个数。并输出你输入的数字所随机选择的文件的名字。

如,你们班级有26位同学,每次上课要随机取几名来提问。

#!/bin/bash

read -p "please input the number you want to choice: " NOM

STUD=(A B C D E F G H I J K L M N O P Q R S T U V W X Y Z)

declare A=1

while [ $A -le $NOM ]; do

INDEX=$[$RANDOM%26]

let A++

echo ${STUD[$INDEX]}

done

输入几就会随机抽出几个
本文出自 “蜗牛也是牛” 博客,请务必保留此出处http://abliq.blog.51cto.com/3353566/650581
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: