linux - 减少 bash 脚本中命令的重复

标签 linux bash scripting

我正在编写一个 bash 脚本来增加 VPS 服务器上的/tmp,我想让它更干净/更高效,而无需为选择的任何选项重复相同的命令。现在的结构如下:

#!/bin/bash

  showMenu () {
        echo "1) Increase /tmp size to 1 GB"
        echo "2) Increase /tmp size to 2 GB"
        echo "3) Quit"
}
   while [ 1 ]
   do
       showMenu
       read CHOICE
       case "$CHOICE" in

  "1")
       /etc/init.d/mysql stop
       /etc/init.d/httpd stop
       /etc/init.d/cpanel stop
       cp -af /var/tmp /var/tmp.bak
       umount -l /var/tmp
       umount -l /tmp
       rm -f /usr/tmpDSK
       dd if=/dev/zero of=/usr/tmpDSK bs=1M count=1k
       mkfs.ext3 -F /usr/tmpDSK
       mount -t ext3 -o nosuid,noexec,loop /usr/tmpDSK /tmp
       mount -o bind,noexec,nosuid /tmp /var/tmp
       cp -a /var/tmp.bak/* /tmp/
       rm -rf /var/tmp.bak/
       chmod 1777 /tmp
       /etc/init.d/mysql start
       /etc/init.d/httpd start
       /etc/init.d/cpanel start
       df -h
       exit 1
       ;;

    "2")
       /etc/init.d/mysql stop
       /etc/init.d/httpd stop
       /etc/init.d/cpanel stop
       cp -af /var/tmp /var/tmp.bak
       umount -l /var/tmp
       umount -l /tmp
       rm -f /usr/tmpDSK
       dd if=/dev/zero of=/usr/tmpDSK bs=1M count=2k
       mkfs.ext3 -F /usr/tmpDSK
       mount -t ext3 -o nosuid,noexec,loop /usr/tmpDSK /tmp
       mount -o bind,noexec,nosuid /tmp /var/tmp
       cp -a /var/tmp.bak/* /tmp/
       rm -rf /var/tmp.bak/
       chmod 1777 /tmp
       /etc/init.d/mysql start
       /etc/init.d/httpd start
       /etc/init.d/cpanel start
       df -h
       exit 1
       ;;

    "3")
        exit 1
       ;;
      esac
    done

在此过程中,我基本上只想启动一次冗余命令。你能给我一个或多个关于执行此操作的最佳方法的想法吗?

谢谢。

最佳答案

听起来很适合 bash function .将代码的主体放在函数中,然后传递大小参数。

关于linux - 减少 bash 脚本中命令的重复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11369013/

相关文章:

linux - 如何在 bash 中通过脚本将第二行打印到输出中

linux - 期望 "do"的 shell 脚本错误

powershell - 从 powershell 中的字符串中删除数字

php - 使用 php 脚本将 pimcore 中的现有数据对象导出到 XML 文件

linux - Bash 将值加载到文件中的更直接方式

c++ - 使用匿名 mmap() 检查实际分配的页面数

linux - grep 模式匹配后仅包含一个单词的行(忽略空格)

Bash:sudo:找不到命令

java - 在Android中可以使用哪些编程语言进行开发?

我可以使用一个进程中的 PTE 来指示物理内存片段以在其他进程中创建适当的 PTE 吗?