• 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

  • 相关阅读:
    7.过拟合和正则化
    PAM从入门到精通(十四)
    ObjectiveC-08-OOP面向对象程序设计-类的分离与组合
    多模态大模型总结
    【SLAM】基于rrt_explore的移动机器人自主建图
    三菱FX3U——ST编程定时器和计数器
    springBoot 源码三:Starter机制和springboot整合tomcat
    初学者常见异常丨传说中的NPE空指针异常怎么解决?
    Python基础笔记持续记录
    超神之路 数据结构 3 —— Stack栈实现及应用
  • 原文地址:https://blog.csdn.net/ajax_beijing_java/article/details/133017580