Board logo

标题: Shell脚本中的函数 [打印本页]

作者: admin    时间: 2020-1-2 19:58     标题: Shell脚本中的函数

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登录服务器: 图片1.png 图片3.png 至此理应会自动运行脚本“/scripts/xx.sh”: 图片4.png 相关文章: if语句 case语句 用户管理 Python3脚本中的自定义函数

图片附件: 图片3.png (2023-6-26 17:04, 13.97 KB) / 下载次数 6
http://blog.zhuohua.store/attachment.php?aid=22316&k=e3dac9555200eb1e8d739228b849b0fa&t=1714295720&sid=KK4z89



图片附件: 图片4.png (2023-6-26 17:04, 48.35 KB) / 下载次数 9
http://blog.zhuohua.store/attachment.php?aid=22317&k=493386dda00e78a1555bd55e8a975412&t=1714295720&sid=KK4z89



图片附件: 图片1.png (2023-6-26 17:06, 25.2 KB) / 下载次数 5
http://blog.zhuohua.store/attachment.php?aid=22318&k=938bcb94e7b43d42fbcde982eebe5f32&t=1714295720&sid=KK4z89






欢迎光临 blog.zhuohua.store (http://blog.zhuohua.store/) Powered by Discuz! 7.2