[娱乐] Shell 菜单

介绍:

作者:朱明宇
名称:菜单
作用:提供一个可以供用户进行选择的菜单

使用方法:
1. 给此脚本添加执行权限
2. 执行此脚本

脚本:

#!/bin/bash

while true
do
        echo
        echo '====== Optional Item ======'
        echo '1.choose CentOS'
        echo '2.choose RHEL'
        echo '3.choose openSUSE'
        echo '4.choose SUSE'
        echo '*.Enter other keys to exit'
        echo
        read -p 'Which one do you want to choose ? ' choose

        case $choose in
        1)
                echo
                echo
                echo '=========  Result ========='
                echo 'You have choosed CentOS'
                echo ;;
        2)
                echo
                echo
                echo '=========  Result ========='
                echo 'You have choosed RHEL'
                echo ;;
        3)
                echo
                echo
                echo '=========  Result ========='
                echo 'You have choosed openSUSE'
                echo ;;
        4)
                echo
                echo
                echo '=========  Result ========='
                echo 'You have choosed SUSE'
                echo ;;
        *)
                exit 1 ;;
        esac
done

[内容] Linux 空值的判断

案例一:

#!/bin/bash
var=
if [ ! -n "$var" ]; then
  echo "NULL"
else
  echo "NOT NULL"
fi

案例二:

#!/bin/bash
var=
if [ ! "$var" ]; then
  echo "NULL"
else
  echo "NOT NULL"
fi

案例三:

#!/bin/sh 
var=
if [ "$var" = "" ]
then
  echo "NULL"
else  
  echo "NOT NULL"
fi

案例四:

#!/bin/sh
var=
if test -z "$var"
then
  echo "NULL"
else  
  echo "NOT NULL"
fi

[内容] Linux for 循环

内容目录:

内容一:Linux for 循环的格式

内容二:Linux for 循环的使用案例
2.1 案例一:以名称作为循环条件
2.2 案例二:以名称和通佩符的组合作为循环条件
2.3 案例三:以当前目录下的文件名,并以名称和通佩符的组合作为循环条件
2.4 案例四:以当前目录下的文件名,并以名称和连续符号的组合作为循环条件
2.5 案例五:以连续数组作为循环条件
2.5.1 以 seq 命令生成的数字作为循环条件
2.5.2 以连续符号命令生成的数字作为循环条件
2.6 案例六:以等差数列作为循环条件
2.7 案例七:以命令的运行结果作为循环条件
2.8 案例八:多个循环条件

具体的内容:

内容一:Linux for 循环的格式

for <variable> in <list>
do
<command>
done

内容二:Linux for 循环的使用案例
2.1 案例一:以名称作为循环条件

# for i in host1 host2 host3; do echo $i; done
host1
host2
host3

(补充:这里以 host1、host2、host3 三个名称作为循环条件为例)

2.2 案例二:以名称和通佩符的组合作为循环条件

# for i in host{1..3}; do echo $i; done
host1
host2
host3

(补充:这里以 host1、host2、host3 三个名称作为循环条件,并且通过通佩符进行了缩写为例)

2.3 案例三:以当前目录下的文件名,并以名称和通佩符的组合作为循环条件

# for i in *.txt ;do ls $i; done
a.txt
b.txt
c.txt

(补充:这里以所有以 txt 结尾的文件作为循环条件为例)

2.4 案例四:以当前目录下的文件名,并以名称和连续符号的组合作为循环条件

# for i in {a..c}.txt; do ls $i; done
a.txt
b.txt
c.txt

(补充:这里以所有以 txt 结尾的文件作为循环条件为例,并且通过通佩符进行了缩写为例)

2.5 案例五:以连续数组作为循环条件
2.5.1 以 seq 命令生成的数字作为循环条件

# for i in `seq 1 10`; do echo $i; done
1
2
3
4
5
6
7
8
9
10

(补充:这里以 seq 1 10 命令的运行结果 1 到 10 作为循环条件为例)

2.5.2 以连续符号命令生成的数字作为循环条件

# for i in {1..10} ; do echo $i; done
1
2
3
4
5
6
7
8
9
10

(补充:这里以 {1..10} 符号命令的运行结果 1 到 10 作为循环条件为例)

2.6 案例六:以等差数列作为循环条件

# for i in `seq 2 2 10`; do echo $i; done
2
4
6
8
10

(补充:这里以 seq 2 2 10 命令的运行结果 1 到 10 里的双数作为循环条件为例)

2.7 案例七:以命令的运行结果作为循环条件

# for i in `cat user.list`; do echo $i; done
Tom
Natasha

(补充:这里以 cat user.list 命令的运行结果 user.list 文件里的内容作为循环条件为例)

2.8 案例八:多个循环条件

> for i in {1..4}.{1..4}; do echo $i; done
1.1
1.2
1.3
1.4
2.1
2.2
2.3
2.4
3.1
3.2
3.3
3.4
4.1
4.2
4.3
4.4

(补充:这里以 {1..4}.{1..4} 命令的运行结果 1.1 到 4.4 作为循环条件为例)

[工具] Shell 取消所有已开放的端口策略 (firewalld 版)

介绍:

作者:朱明宇
名称:取消所有已开放的端口策略
作用:取消所有已开放的端口策略

使用方法:
1. 给此脚本添加执行权限
2. 执行此脚本

脚本:

#!/bin/bash

systemctl start firewalld
systemctl enable firewalld

for i in `firewall-cmd --list-all | grep ports | egrep [0-9] | awk -F':' '{print $2}'`
do
        pports=`echo $i | awk -F'/' '{print $1}'`
        ptus=`echo $i | awk -F'/' '{print $2}'`

        firewall-cmd --remove-port=$pports/$ptus --permanent

done

firewall-cmd --add-service=ssh --permanent
firewall-cmd --reload