Linux命令:简单函数调用
脚本编程之函数: function: 功能
结构化编程,不能独立运行,需要调用时执行,可以被多次调用
1、定义一个函数:
function FUNCNAME {
command
}
FUNCNAME() {
command
}
2、自定义函数执行状态返回值:return # (0-255)
3、接受参数的函数:
./a.sh m n
$1: m
$2: n
TWOINT 5 6
$1: 5
$2: 6
练习1:写一个脚本,自动显示相关信息
#!/bin/bash
# diskusage.sh
function SHOWMENU() { #定义函数
cat << EOF
d|D) show disk usages
m|M) show memory usages
s|S) show swap usages
q|Q) quit
EOF
}
read -p "Your choice:" CHOICE
until [ $CHOICE == ‘q‘ -o $CHOICE == ‘Q‘ ];do
case $CHOICE in
d|D) df -h ;;
m|M) free -m |grep "^Mem" ;;
s|S) free -m |grep "^Swap" ;;
*) SHOWMENU
read -p "Your choice,again:" CHOICE ;;
esac
SHOWMENU
read -p "Your choice,again:" CHOICE
done
练习2:写一个脚本,自动新增用户且密码与用户相同
#!/bin/bash
# adduser.sh
#
ADDUSER() {
if ! id -u $1 &> /dev/null;then
useradd $1
echo $1 | passwd --stdin $1 &> 1116.www.qixoo.qixoo.com/dev/null
return 0
else
return 1
fi
}
for I in {1..3};do
ADDUSER user$I
if [ $? -eq 0 ] ;then
echo "add user$I finished."
else
echo "user$I exists,add Failuer."
fi
done
练习3:写一个脚本,判定192.168.0.200-192.168.0.254之间的主机哪些在线。要求:
1、使用函数来实现一台主机的判定过程;
2、在主程序中来调用此函数判定指定范围内的所有主机的在线情况。
#!/bin/bash
# ping.sh
#
PING() {
if ping -c1 -W1 $1 &> /dev/null;then
return 0
else
return 1
fi
}
for I in {200..210};do
PING 10.109.131.$I
if [ $? -eq 0 ] ;then #上一条语句执行状态结果0或1
echo "10.109.131.$1 is up."
else
echo "10.109.131.$1 is down."
fi
done
for I in {200..210};do
if PING 10.109.131.$I ;then #彩色部分输出return的结果0或1,加反引号是echo显示的信息
echo "10.109.131.$1 is up."
else
echo "10.109.131.$1 is down."
fi
done
练习4:写一个脚本:使用函数完成
1、函数能够接受一个参数,参数为用户名;判断一个用户是否存在,
如果存在,就返回此用户的shell和UID;并返回正常状态值0;
如果不存在,就说此用户不存在;并返回错误状态值1;
2、在主程序中调用函数;
扩展1:在主程序中,让用户自己输入用户名后,传递给函数来进行判断;
扩展2:在主程序中,输入用户名判断后不退出脚本,而是提示用户继续输入下一个用户名;如果用户输入的用户不存在,请用户重新输入;但如果用户输入的是q或Q就退出;
#!/bin/bash
# bash.sh
#
USER(){
if id $1 &> /dev/null ;then
echo "` grep ^$1 /etc/passwd |cut -d: -f3,7`"
return 0
else
return 1
fi
}
read -p "keyin your username:" USERNAME
until [ $USERNAME == ‘Q‘ -o $USERNAME == ‘q‘ ];do
if USER $USERNAME ;then #if语句执行USER的return值0或1
read -p "keyin your username:" USERNAME
else
read -p "$USERNAME exists,Please keyin your username again:" USERNAME
fi
done
[ etc]# ./bash.sh
keyin your username:root
0:/bin/bash
keyin your username:ww
ww exists,Please keyin your username again:tt
tt exists,Please keyin your username again:root
0:/bin/bash
keyin your username:q
[ etc]#
Linux命令:简单函数调用的更多相关文章
- Linux02 /Linux命令简单使用
Linux02 /Linux命令简单使用 目录 Linux02 /Linux命令简单使用 1. 远程连接Linux 2. 目录相关操作 3. 简单命令 1. 远程连接Linux 远程连接工具 Xshe ...
- 转 PHP中exec、system等函数调用linux命令问题
PHP中exec.system等函数调用linux命令问题 先小说两句:今天研究了下PHP调用LINUX命令的功能,一开始怎么做都调用不成功,试了好久才终于成功了,所以发出来分享一下.下面我将详细介绍 ...
- Linux的简单介绍和常用命令的介绍
Linux的简单介绍和常用命令的介绍 本说明以Ubuntu系统为例 Ubuntu系统的安装自行百度,或者参考http://www.cnblogs.com/CoderJYF/p/6091068.html ...
- 从零单排Linux – 1 – 简单命令
从零单排Linux – 1 – 简单命令 Posted in: Linux 从零单排Linux – 1 一.Linux的简单命令: 1.忘记root密码: 读秒时按任意键进入 – e – ↓选择第二个 ...
- Linux命令行及Vim简单学习记录
Linux命令行 1.打开命令行 Ctrl+Alt+t 2.目录 显示当前目录的文件列表 ls 跳转至当前目录中的x文件夹 cd x 返回根目录 cd 3.文件 新建文件1.cpp touch ./1 ...
- Linux的简单命令
Linux的简单命令 1.更改linux服务器的登录密码 成功登录后输入命令: passwd 然后按照提示操作即可 2.在当前路径下新建文件夹:mkdir 新建文件夹名 3.解压和压缩文件tar.gz ...
- Linux——帮助命令简单学习笔记
Linux帮助命令简单学习笔记: 一: 命令名称:man 命令英文原意:manual 命令所在路径:/usr/bin/man 执行权限:所有用户 语法:man [命令或配置文件] 功能描述:获得帮助信 ...
- Xshell登陆服务器及Linux的简单命令
在之前的推文中,我已经给出了怎样利用Git登陆服务器”你在用xshell,putty登陆?推荐一个小工具(Git)登陆“其中包括xshell登陆服务器.今天讲讲常见的Linux命令,这个和之前将的利用 ...
- Linux 的简单命令以及在idea中配置码云
Linux 的简单命令: ls(list)功能:列出目录内容 cd(change directory)功能:切换目录 touch 1.txt 在当前目录创建一个文件1.txt clear:清除屏幕 p ...
- Linux命令系列之ls——原来最简单的ls这么复杂
Linux命令系列之ls--原来最简单的ls这么复杂 ls命令应该是我们最常用的命令之一了,但是我们可能容易忽略那些看起来最简单的东西. 简介 ls命令的使用格式如下 ls [选项] [具体的文件] ...
随机推荐
- hystrix-turbine 监控的使用
1. 概述 Demo地址:http://git.oschina.net/zhou666/spring-cloud-7simple/tree/master/cloud-hystrix-turbine ...
- operating expense & captial expenditure
营运成本(营业成本, operating expense, OPEX) 指的是运行企业的持续性.消耗性的支出,与之对照的是资本支出(captial expenditure, CAPEX).例如:购买影 ...
- android之广播(二)
广播接受者不仅可以通过清单文件来向系统注册,也可以通过代码来注册.并且有的广播必须通过代码来注册广播接受者. 锁屏和解锁广播 电量改变广播 打开屏幕和关闭屏幕 这里将广播接收者写在服务里面 <? ...
- 新的博客 bincoding.github.io
最近周围的人都在用静态博客,随主流也换了github page搭建hexo. bincoding.github.io 个人网站,用来上线乱七八糟的东西: bincoding.cn
- AndroidPn
客户端的主要包说明 org.androidpn.client包下的文件 public class Constants { //包含静态数据 public class InvalidFormatExc ...
- js window.open 打开新窗体 参数设置
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- js 中 == 和=== 有什么区别?
第一个是相等符:第二个全等符: 其中第一个在比较的时候,会进行类型转换,而第二个则不会, alert('55' == 55);//truealert('55' === 55);//false
- C++强制类型转换操作符 static_cast
static_cast是一个强制类型转换操作符.强制类型转换,也称为显式转换,C++中强制类型转换操作符有static_cast.dynamic_cast.const_cast.reinterpert ...
- 73.Android之SparseArray替代HashMap
转载:https://liuzhichao.com/p/832.html HashMap是java里比较常用的一个集合类,我比较习惯用来缓存一些处理后的结果.最近在做一个Android项目,在代码中定 ...
- BZOJ 1105: [POI2007]石头花园SKA
1105: [POI2007]石头花园SKA Time Limit: 20 Sec Memory Limit: 162 MBSubmit: 628 Solved: 182[Submit][Stat ...