Shell脚本中的函数:有时脚本中的某段代码总是被重复使用,那么可以将其写成函数,每次要用到时直接调用该函数即可。
例子一:
[root@localhost ~]# cat xx.sh
#!/bin/bash
function gc_ff() #自定义函数
{
echo "##### Welcome to zhuohua. #####"
echo "1: Install Apache"
echo "2: Install MySQL"
echo "3: Install PHP"
echo "4: Exit current script"
echo "#####################################"
read -p "Enter your choice (1, 2, 3, 4): " action1
}
gc_ff #先执行一次函数gc_ff()
if [ $action1 -eq 1 ]; then
echo "Installing Apache..."
echo "Install Apache completed,enjoy it!"
echo ""
gc_ff #再执行一次函数gc_ff()
fi
if [ $action1 -eq 2 ]; then
echo "Installing MySQL..."
echo "Install MySQL completed,enjoy it!"
echo ""
echo ""
gc_ff #再执行一次函数gc_ff()
fi
if [ $action1 -eq 3 ]; then
echo "Installing PHP..."
echo "Install PHP completed,enjoy it!"
clear #清屏
gc_ff #再执行一次函数gc_ff()
fi
脚本运行的效果:
[root@localhost ~]# bash xx.sh
##### Welcome to zhuohua. #####
1: Install Apache
2: Install MySQL
3: Install PHP
4: Exit current script
#####################################
Enter your choice (1, 2, 3, 4): 1
Installing Apache...
Install Apache completed,enjoy it!
##### Welcome to zhuohua. #####
1: Install Apache
2: Install MySQL
3: Install PHP
4: Exit current script
#####################################
Enter your choice (1, 2, 3, 4): 2
Installing MySQL...
Install MySQL completed,enjoy it!
##### Welcome to zhuohua. #####
1: Install Apache
2: Install MySQL
3: Install PHP
4: Exit current script
#####################################
Enter your choice (1, 2, 3, 4): 3
Installing PHP...
Install PHP completed,enjoy it! ##注释:这里已经被清屏
##### Welcome to zhuohua. #####
1: Install Apache
2: Install MySQL
3: Install PHP
4: Exit current script
#####################################
Enter your choice (1, 2, 3, 4): 4
[root@localhost ~]#
######
######
例子二:
[root@localhost ~]# cat yy.sh
#!/bin/bash
function Gc_ff_1() #自定义函数
{
echo "##### Welcome to zhuohua. #####"
echo "1: Install Apache"
echo "2: Install MySQL"
echo "c: Install PHP"
echo "q: Exit current script"
echo "#####################################"
read -p "Enter your choice (1, 2, c, q): " Action_1
}
function Gc_ff_2() #自定义函数
{
echo "Installing PHP..."
echo "Install PHP completed,enjoy it!"
clear #清屏
Gc_ff_1 #再执行一次函数Gc_ff_1()
}
Gc_ff_1 #先执行一次函数Gc_ff_1()
case $Action_1 in
1)
echo "Installing Apache..."
echo "Install Apache completed,enjoy it!"
echo ""
Gc_ff_1 #再执行一次函数Gc_ff_1()
esac
case $Action_1 in
2)
echo "Installing MySQL..."
echo "Install MySQL completed,enjoy it!"
echo ""
echo ""
Gc_ff_1 #再执行一次函数Gc_ff_1()
esac
case $Action_1 in
c)
Gc_ff_2 #执行一次函数Gc_ff_2()
esac
case $Action_1 in
q)
exit 0 #终止脚本的运行
esac
脚本运行的效果:
[root@localhost ~]# bash yy.sh
##### Welcome to zhuohua. #####
1: Install Apache
2: Install MySQL
c: Install PHP
q: Exit current script
#####################################
Enter your choice (1, 2, c, q): 1
Installing Apache...
Install Apache completed,enjoy it!
##### Welcome to zhuohua. #####
1: Install Apache
2: Install MySQL
c: Install PHP
q: Exit current script
#####################################
Enter your choice (1, 2, c, q): 2
Installing MySQL...
Install MySQL completed,enjoy it!
##### Welcome to zhuohua. #####
1: Install Apache
2: Install MySQL
c: Install PHP
q: Exit current script
#####################################
Enter your choice (1, 2, c, q): c
Installing PHP...
Install PHP completed,enjoy it! ##注释:这里已经被清屏
##### Welcome to zhuohua. #####
1: Install Apache
2: Install MySQL
c: Install PHP
q: Exit current script
#####################################
Enter your choice (1, 2, c, q): q
[root@localhost ~]#
######
######
例子三:
[root@localhost ~]# cat zz.sh
#!/bin/bash
Display_Install_Menu_1() #自定义函数
{
echo "##### Install Apache #####"
echo "1: Install Apache2.2"
echo "2: Install Apache2.4"
echo "q: Exit current script"
echo "###"
read -p "Enter your choice (1, 2, q): " action1
if [ $action1 == "1" ]; then
echo "You will install Apache2.2"
elif [ $action1 == "2" ]; then
echo "You will install Apache2.4"
elif [ $action1 == "q" ]; then
exit 0 #终止脚本的运行
fi
Display_Install_Menu_2 #执行一次函数Display_Install_Menu_2()
}
Display_Install_Menu_2() #自定义函数
{
echo "##### Install MySQL #####"
echo "1: Install MySQL5.5"
echo "2: Install MySQL5.6"
echo "3: Install MySQL5.7"
echo "q: Exit current script"
echo "###"
read -p "Enter your choice (1, 2, 3, q): " action2
if [ $action2 == "q" ]; then
exit 0 #终止脚本的运行
fi
Display_Install_Menu_3 #执行一次函数Display_Install_Menu_3()
}
Display_Install_Menu_3() #自定义函数
{
echo "##### Install PHP #####"
echo "1: Install PHP5.6"
echo "2: Install PHP7.0"
echo "3: Install PHP7.1"
echo "4: Install PHP7.2"
echo "q: Exit current script"
echo "###"
read -p "Enter your choice (1, 2, 3, 4, q): " action_3
if [ $action_3 == "q" ]; then
exit 1 #终止脚本的运行
fi
}
Display_Install_Menu_4() #自定义函数
{
echo ""
echo "Installing Apache2.4..."
echo "Install Apache2.4 completed,enjoy it!"
echo "Installing MySQL5.6..."
echo "Install MySQL5.6 completed,enjoy it!"
echo "Installing PHP7.2..."
echo "Install PHP7.2 completed,enjoy it!"
echo ""
}
Display_Install_Menu_1 #先执行一次函数Display_Install_Menu_1()
if [ $action1 == "1" ] && [ $action2 == "1" ] && [ $action_3 == "1" ]; then
echo ""
echo "Installing Apache2.2..."
echo "Install Apache2.2 completed,enjoy it!"
echo "Installing MySQL5.5..."
echo "Install MySQL5.5 completed,enjoy it!"
echo "Installing PHP5.6..."
echo "Install PHP5.6 completed,enjoy it!"
echo ""
elif [ $action1 == "2" ] && [ $action2 == "1" ] && [ $action_3 == "1" ]; then
echo ""
echo "Installing Apache2.4..."
echo "Install Apache2.4 completed,enjoy it!"
echo "Installing MySQL5.5..."
echo "Install MySQL5.5 completed,enjoy it!"
echo "Installing PHP5.6..."
echo "Install PHP5.6 completed,enjoy it!"
echo ""
elif [ $action1 == "2" ] && [ $action2 == "2" ] && [ ${action_3} == "4" ]; then
Display_Install_Menu_4 #执行一次函数Display_Install_Menu_4()
fi
脚本运行的效果:
[root@localhost ~]# bash zz.sh
##### Install Apache #####
1: Install Apache2.2
2: Install Apache2.4
q: Exit current script
###
Enter your choice (1, 2, q): 1
You will install Apache2.2
##### Install MySQL #####
1: Install MySQL5.5
2: Install MySQL5.6
3: Install MySQL5.7
q: Exit current script
###
Enter your choice (1, 2, 3, q): 1
##### Install PHP #####
1: Install PHP5.6
2: Install PHP7.0
3: Install PHP7.1
4: Install PHP7.2
q: Exit current script
###
Enter your choice (1, 2, 3, 4, q): 1
Installing Apache2.2...
Install Apache2.2 completed,enjoy it!
Installing MySQL5.5...
Install MySQL5.5 completed,enjoy it!
Installing PHP5.6...
Install PHP5.6 completed,enjoy it!
[root@localhost ~]#
[root@localhost ~]# bash zz.sh
##### Install Apache #####
1: Install Apache2.2
2: Install Apache2.4
q: Exit current script
###
Enter your choice (1, 2, q): 2
You will install Apache2.4
##### Install MySQL #####
1: Install MySQL5.5
2: Install MySQL5.6
3: Install MySQL5.7
q: Exit current script
###
Enter your choice (1, 2, 3, q): 2
##### Install PHP #####
1: Install PHP5.6
2: Install PHP7.0
3: Install PHP7.1
4: Install PHP7.2
q: Exit current script
###
Enter your choice (1, 2, 3, 4, q): 4
Installing Apache2.4...
Install Apache2.4 completed,enjoy it!
Installing MySQL5.6...
Install MySQL5.6 completed,enjoy it!
Installing PHP7.2...
Install PHP7.2 completed,enjoy it!
[root@localhost ~]#
######
让系统用户使用远程客户端工具SSH登录服务器时,自动运行某个脚本:
先创建一个系统用户zhuohua:
[root@localhost ~]# useradd zhuohua
[root@localhost ~]#
给系统用户zhuohua设置密码:
[root@localhost ~]# echo '123' | passwd --stdin zhuohua
更改用户 zhuohua 的密码 。
passwd: 所有的身份验证令牌已经成功更新。
[root@localhost ~]#
查看系统用户zhuohua的家目录:
[root@localhost ~]# ls -alh /home/zhuohua/
总用量 24K
drwx------ 3 zhuohua zhuohua 4.0K 6月 23 02:35 .
drwxr-xr-x. 6 root root 4.0K 6月 23 02:35 ..
-rw-r--r-- 1 zhuohua zhuohua 18 3月 23 2017 .bash_logout
-rw-r--r-- 1 zhuohua zhuohua 176 3月 23 2017 .bash_profile
-rw-r--r-- 1 zhuohua zhuohua 124 3月 23 2017 .bashrc
drwxr-xr-x 2 zhuohua zhuohua 4.0K 11月 12 2010 .gnome2
[root@localhost ~]#
原始文件内容:
[root@localhost ~]# cat /home/zhuohua/.bash_profile
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
# User specific environment and startup programs
PATH=$PATH:$HOME/bin
export PATH
[root@localhost ~]#
创建脚本存放目录,并存放需要用到的脚本:
[root@localhost ~]# mkdir /scripts
[root@localhost ~]# cp xx.sh /scripts/
[root@localhost ~]#
设置脚本权限:
[root@localhost ~]# ll /scripts/xx.sh
-rw-r--r-- 1 root root 797 6月 23 02:37 /scripts/xx.sh
[root@localhost ~]#
[root@localhost ~]# chmod a+x /scripts/xx.sh
[root@localhost ~]#
[root@localhost ~]# ll /scripts/xx.sh
-rwxr-xr-x 1 root root 797 6月 23 02:37 /scripts/xx.sh
[root@localhost ~]#
让系统用户zhuohua每次登录时,自动运行指定的脚本:
[root@localhost ~]# echo 'bash /scripts/xx.sh' >> /home/zhuohua/.bash_profile
[root@localhost ~]#
[root@localhost ~]# cat /home/zhuohua/.bash_profile
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
# User specific environment and startup programs
PATH=$PATH:$HOME/bin
export PATH
bash /scripts/xx.sh
[root@localhost ~]#
测试:
[root@localhost ~]# su zhuohua
[zhuohua@localhost root]$
[zhuohua@localhost root]$ exit
exit
[root@localhost ~]#
[root@localhost ~]# su - zhuohua
##### Welcome to zhuohua. #####
1: Install Apache
2: Install MySQL
3: Install PHP
4: Exit current script
#####################################
Enter your choice (1, 2, 3, 4): 1
Installing Apache...
Install Apache completed,enjoy it!
##### Welcome to zhuohua. #####
1: Install Apache
2: Install MySQL
3: Install PHP
4: Exit current script
#####################################
Enter your choice (1, 2, 3, 4):
###
尝试让系统用户zhuohua使用远程客户端工具SSH登录服务器:
至此理应会自动运行脚本“/scripts/xx.sh”:
相关文章:
if语句
case语句
用户管理
Python3脚本中的自定义函数 |