Linux之部分shell脚本练习
2014-05-09 22:29
411 查看
#键盘键入两个整数,并计算它们之和
#!/bin/bash
#
#echo -n "Input two Intergers:"
read -t 5 -p "Input two Intergers[100 and 200]:" A B
[ -z $A ] && A=100
[ -z $B ] && B=200
echo "$A plus $B is:$[$A+$B]"
#归档文件的脚本
#!/bin/bash
#
read -p "Three files:" FILE1 FILE2 FILE3
read -p "Destination:" DEST
read -p "Compress[gzip|bzip2|xz]:" COMP
case $COMP in
gzip)
tar -zcf ${DEST}.tar.gz $FILE1 $FILE2 $FILE3
;;
bzip2)
tar -jcf ${DEST}.tar.bz2 $FILE1 $FILE2 $FILE3
;;
xz)
tar -cf ${DEST}.tar $FILE1 $FILE2 $FILE3
xz ${DEST}.tar
;;
*)
echo "Unknown."
exit 9
;;
esac
脚本编程:
顺序结构
选择结构
if
case
循环结构
for
while
until
while循环:试用于循环次数未知的场景
语法:
while CONDITION; do
statement
...
done
#计算100以内和
#!/bin/bash
#
declare -i I=1
declare -i SUM=0
while [ $I -le 100 ]; do
let SUM+=$I
let I++
done
echo $SUM
#输入字符串,提示要修改成大写的,如果是quit,则退出。
#!/bin/bash
#
read -p "Input something:" STRING
while [ $STRING != 'quit' ];do
echo $STRING | tr 'a-z' 'A-Z'
read -p "Input something:" STRING
done
#查看用户hadoop是否登录
#!/bin/bash
#
who | grep "hadoop" &>/dev/null
RETVAL=$?
while [ RETVAL -ne 0 ];do
echo "date ,hadoop is not logged"
sleep 5
who | grep "hadoop" &>/dev/null
RETVAL=$?
done
echo "hadoop is logged in."
----------------------------
<<EOF
(内容)
EOF
把EOF替换成其东西
意思把内容当作标准输入传给程序
----------------------------
显示一个菜单给用户
第一版
#!/bin/bash、
#
cat << EOF
d|D) show disk usages.
m|M) show memory usages.
s|S) show swap usages.
EOF
read -p "your choice:" CHOICE
case $CHOICE in
d|D)
echo "DISK usages:"
df -Ph
;;
m|M)
echo "MEMORY usages:"
free -m | grep "Men"
;;
s|S)
echo "SWAP usages:"
free -m | grep "swap"
;;
*)
echo "Unknown"
exit 9
esac
esac
第二版
#!/bin/bash
#
cat << EOF
d|D) show disk usages.
m|M) show memory usages.
s|S) show swap usages.
EOF
read -p "your choice:" CHOICE
while [ $CHOICE == 'quit'];do
case $CHOICE in
d|D)
echo "DISK usages:"
df -Ph
;;
m|M)
echo "MEMORY usages:"
free -m | grep "Men"
;;
s|S)
echo "SWAP usages:"
free -m | grep "swap"
;;
*)
echo "Unknown.."
;;
esac
read -p "Again,your choice: " CHOICE
done
知识点
man echo
echo -e "\033[1mHello\003[0m,world"
echo -e "\033[2mHello\003[0m,world"
echo -e "\033[31mHello\003[0m,world"
echo -e "\033[41mHello\003[0m,world"
echo -e "\033[32;41mHello\003[0m,world"
echo -e "\033[1;37mHello\003[0m,world"
扩展题目:给用户颜色的显示
echo -n -e "\033[31myour choice:\033[0m"
read CHOICE
while [ $CHOICE == 'quit'];do
case $CHOICE in
d|D)
echo "DISK usages:"
df -Ph
;;
m|M)
echo "MEMORY usages:"
free -m | grep "Men"
;;
s|S)
echo "SWAP usages:"
free -m | grep "swap"
;;
*)
echo "Unknown.."
;;
esac
read -p "Again,your choice: " CHOICE
done
#!/bin/bash
#
#echo -n "Input two Intergers:"
read -t 5 -p "Input two Intergers[100 and 200]:" A B
[ -z $A ] && A=100
[ -z $B ] && B=200
echo "$A plus $B is:$[$A+$B]"
#归档文件的脚本
#!/bin/bash
#
read -p "Three files:" FILE1 FILE2 FILE3
read -p "Destination:" DEST
read -p "Compress[gzip|bzip2|xz]:" COMP
case $COMP in
gzip)
tar -zcf ${DEST}.tar.gz $FILE1 $FILE2 $FILE3
;;
bzip2)
tar -jcf ${DEST}.tar.bz2 $FILE1 $FILE2 $FILE3
;;
xz)
tar -cf ${DEST}.tar $FILE1 $FILE2 $FILE3
xz ${DEST}.tar
;;
*)
echo "Unknown."
exit 9
;;
esac
脚本编程:
顺序结构
选择结构
if
case
循环结构
for
while
until
while循环:试用于循环次数未知的场景
语法:
while CONDITION; do
statement
...
done
#计算100以内和
#!/bin/bash
#
declare -i I=1
declare -i SUM=0
while [ $I -le 100 ]; do
let SUM+=$I
let I++
done
echo $SUM
#输入字符串,提示要修改成大写的,如果是quit,则退出。
#!/bin/bash
#
read -p "Input something:" STRING
while [ $STRING != 'quit' ];do
echo $STRING | tr 'a-z' 'A-Z'
read -p "Input something:" STRING
done
#查看用户hadoop是否登录
#!/bin/bash
#
who | grep "hadoop" &>/dev/null
RETVAL=$?
while [ RETVAL -ne 0 ];do
echo "date ,hadoop is not logged"
sleep 5
who | grep "hadoop" &>/dev/null
RETVAL=$?
done
echo "hadoop is logged in."
----------------------------
<<EOF
(内容)
EOF
把EOF替换成其东西
意思把内容当作标准输入传给程序
----------------------------
显示一个菜单给用户
第一版
#!/bin/bash、
#
cat << EOF
d|D) show disk usages.
m|M) show memory usages.
s|S) show swap usages.
EOF
read -p "your choice:" CHOICE
case $CHOICE in
d|D)
echo "DISK usages:"
df -Ph
;;
m|M)
echo "MEMORY usages:"
free -m | grep "Men"
;;
s|S)
echo "SWAP usages:"
free -m | grep "swap"
;;
*)
echo "Unknown"
exit 9
esac
esac
第二版
#!/bin/bash
#
cat << EOF
d|D) show disk usages.
m|M) show memory usages.
s|S) show swap usages.
EOF
read -p "your choice:" CHOICE
while [ $CHOICE == 'quit'];do
case $CHOICE in
d|D)
echo "DISK usages:"
df -Ph
;;
m|M)
echo "MEMORY usages:"
free -m | grep "Men"
;;
s|S)
echo "SWAP usages:"
free -m | grep "swap"
;;
*)
echo "Unknown.."
;;
esac
read -p "Again,your choice: " CHOICE
done
知识点
man echo
echo -e "\033[1mHello\003[0m,world"
echo -e "\033[2mHello\003[0m,world"
echo -e "\033[31mHello\003[0m,world"
echo -e "\033[41mHello\003[0m,world"
echo -e "\033[32;41mHello\003[0m,world"
echo -e "\033[1;37mHello\003[0m,world"
扩展题目:给用户颜色的显示
echo -n -e "\033[31myour choice:\033[0m"
read CHOICE
while [ $CHOICE == 'quit'];do
case $CHOICE in
d|D)
echo "DISK usages:"
df -Ph
;;
m|M)
echo "MEMORY usages:"
free -m | grep "Men"
;;
s|S)
echo "SWAP usages:"
free -m | grep "swap"
;;
*)
echo "Unknown.."
;;
esac
read -p "Again,your choice: " CHOICE
done
相关文章推荐
- Linux之部分shell脚本练习(二)
- 解决部分linux下不能shell脚本失效的解决办法 : not found Bad for loop variable
- Linux下shell脚本中信号捕获和函数练习脚本之ping一个网段
- 【Linux-shell】shell脚本基础语法练习
- Linux的shell脚本打印图形和主机监控脚本练习
- Linux的shell脚本grep、sed、awk练习和diff、patch、cut、sort介绍
- LINUX shell脚本练习:备份文件(1)
- linux 之shell脚本练习
- [Linux]第三部分-学习Shell和Shell脚本
- 【Linux】Shell - 脚本练习 - 获取变量的变量值
- 【Linux】Shell - 脚本练习 - 获取文件某行的内容
- 【Linux】Shell - 脚本练习 - 截取文件内容
- Linux常用Shell脚本练习
- Linux的shell scripts的shell脚本练习
- Linux的shell脚本的语句,函数,检测服务,启动脚本的练习
- Linux服务器安全初始化Shell脚本
- linux 系统下shell脚本拼接字符串
- Linux中执行shell脚本的4种方法总结
- shell脚本实现linux下自动安装Oracle10g
- Linux——利用Shell脚本编写进度条