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
今天看脚本,发现有好多不懂的地方,于是查找资料,总结了一下。
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
相关文章推荐
- Shell脚本编程总结及速查手册
- shell脚本编程总结
- 【Shell 编程基础第二部分】Shell里的流程控制、Shell里的函数及脚本调试方法
- 第二部分 Linux Shell高级编程技巧——第二章 Shell工具
- 脚本文件(shell perl python)编程的总结的框架。
- 【Shell 编程基础第二部分】Shell里的流程控制、Shell里的函数及脚本调试方法!
- Shell脚本知识技巧总结
- Shell脚本编程总结及速查手册
- SHELL脚本编程的常识和VI常用技巧
- Shell编程技巧总结
- 第二部分 Linux Shell高级编程技巧——第二章 Shell工具
- 【Shell 编程基础第二部分】Shell里的流程控制、Shell里的函数及脚本调试方法!
- 【shell】相关编程技巧点和常规总结
- 【Shell 编程基础第二部分】Shell里的流程控制、Shell里的函数及脚本调试方法!
- shell脚本编程基础总结
- Shell脚本编程总结及速查手册
- 查看进程第二部分 Linux Shell高级编程技巧——第二章 Shell工具
- Linux 的shell脚本基础编程总结
- Shell脚本编程总结及速查手册
- 【Shell 编程基础第二部分】Shell里的流程控制\函数及\脚本调试