• linux shell(一)


    1、While循环

    while循环构造用于多次运行某些指令。查看以下名为while.sh的脚本,以更好地理解此概念。

    1. #!/bin/bash
    2. i=0
    3. while [ $i -le 2 ]
    4. do
    5. echo Number: $i
    6. ((i++))
    7. done

    因此,while循环采用以下形式。

    1. while [ condition ]
    2. do
    3. commands 1
    4. commands n
    5. done

    方括号周围的空格是必填的。

    2、For循环

    for循环是另一种广泛使用的bashshell构造,它允许用户高效地迭代代码。下面演示了一个简单的示例。

    1. #!/bin/bash
    2. for (( counter=1; counter<=10; counter++ ))
    3. do
    4. echo -n "$counter "
    5. done
    6. printf "\n"

    3.接收用户输入

    1. #!/bin/bash
    2. echo -n "Enter Something:"
    3. read something
    4. echo "You Entered: $something"

    4、If语句

    1. if CONDITION
    2. then
    3. STATEMENTS
    4. fi

    只有当条件为真时,才会执行这些语句。fi关键字用于标记if语句的结尾。下面显示了一个快速示例。

    #!/bin/bash
    echo -n "Enter a number: "
    read num
    if [[ $num -gt 10 ]]
    then
    echo "Number is greater than 10."
    fi

    如果通过输入提供的数字大于10,上述程序将仅显示输出。-gt表示大于;类似地-lt表示小于-le表示小于等于;且-ge表示大于等于。此外,还需要[[]]。

    5、使用echo打印

    echo命令用于在bash中打印信息。它类似于C函数“printf”,并提供了许多常见选项,包括转义序列和重定向。将以下行复制到名为echo.sh的文件中,并使其可执行,如上所述。

    1. #!/bin/bash
    2. echo "Printing text"
    3. echo -n "Printing text without newline"
    4. echo -e "\nRemoving \t special \t characters\n"

    运行脚本以查看其功能。-e选项用于告诉echo传递给它的字符串包含特殊字符,需要扩展功能。

    echo(选项)(参数)选项

    -e:激活转义字符。使用-e选项时,若字符串中出现以下字符,则特别加以处理,而不会将它当成一般文字输出:

    •\a 发出警告声;
    •\b 删除前一个字符;
    •\c 最后不加上换行符号;
    •\f 换行但光标仍旧停留在原来的位置;
    •\n 换行且光标移至行首;
    •\r 光标移至行首,但不换行;
    •\t 插入tab;
    •\v 与\f相同;
    •\\ 插入\字符;
    •\nnn 插入nnn(八进制)所代表的ASCII字符;
    参数

    变量:指定要打印的变量。

    实例

    用echo命令打印带有色彩的文字:

    文字色:

    echo -e "\e[1;31mThis is red text\e[0m"
    This is red text•\e[1;31m 将颜色设置为红色
    •\e[0m 将颜色重新置回
    颜色码:重置=0,黑色=30,红色=31,绿色=32,黄色=33,蓝色=34,洋红=35,青色=36,白色=37

    背景色:

    echo -e "\e[1;42mGreed Background\e[0m"
    Greed Background颜色码:重置=0,黑色=40,红色=41,绿色=42,黄色=43,蓝色=44,洋红=45,青色=46,白色=47

    文字闪动:

    echo -e "\033[37;31;5mMySQL Server Stop...\033[39;49;0m"
    红色数字处还有其他数字参数:0 关闭所有属性、1 设置高亮度(加粗)、4 下划线、5 闪烁、7 反显、8 消隐

    echo -n 不换行输出
    $echo -n "123"
    $echo "456"

    最终输出 
    123456

    6、使用If Else进行更多控制

    将else构造与if结合起来,可以更好地控制脚本的逻辑。下面显示了一个简单的示例。

    1. #!/bin/bash
    2. read n
    3. if [ $n -lt 10 ];
    4. then
    5. echo "It is a one digit number"
    6. else
    7. echo "It is a two digit number"
    8. fi

    其他部分需要放在if的动作部分之后和fi之前。

    7、应用案例

    需求:判断当前主机是否和远程主机是否ping通

    1. #!/bin/bash
    2. # 该脚本用于判断当前主机是否和远程指定主机互通
    3. read -p "请输入你要ping的主机的IP:" ip
    4. # 使用ping程序判断主机是否互通
    5. ping -c1 $ip &>/dev/null
    6. if [ $? -eq 0 ];then
    7.     echo "当前主机和远程主机$ip是互通的"
    8.  else
    9.      echo "当前主机和远程主机$ip不通的"
    10. fi

    逻辑运算符
    test $? -eq 0 &&  echo "当前主机和远程主机$ip是互通的" || echo "当前主机和远程主机$ip不通的"
     

    8、应用案例

    需求:判断你输入的字符是数字、字母还是其他字符。

    1. [root@server2 ~]# vi case.sh
    2. [root@server2 ~]# chmod +x case.sh
    3. [root@server2 ~]# ./case.sh
    4. #!/bin/bash
    5. # 判断输入的字符是哪种类型
    6. read -p "请输入一个字符并按enter回车确认" key
    7. case "$key" in
    8. [a-z]|[A-Z]) 匹配任意字母
    9. echo "您输入的是字母."
    10. ;;
    11. [0-9]) 匹配任意数字
    12. echo "您输入的是数字."
    13. ;;
    14. *) 匹配任意字符
    15. echo "您输入的是空格,功能键,其它控制字符."
    16. exit 1
    17. esac

  • 相关阅读:
    2、数仓理论概述与相关概念
    CleanMyMac X2024讲解及如何下载?
    程序员追星 - Hal Abelson
    虚拟机安装Ubuntu+graphviz生成图
    Unity Golang教程-Shader编写一个流动的云效果
    mysql数据库常见问题及解决办法
    第7章 博客文章的前端渲染显示
    Leetcode 877. 石子游戏
    MSE 治理中心重磅升级-流量治理、数据库治理、同 AZ 优先
    NPW(监控片的)的要点精讲
  • 原文地址:https://blog.csdn.net/ajax_beijing_java/article/details/133017580