流程控制语句(bash)

1.if控制语句   if then fi     if then else fi    if then elif then elif then ······ else fi
if  条件表达式
then 命令序列(满足条件才执行) #注意,如果if与then(elif与then)写在同一行,要用;隔开)  
fi

if  条件表达式;then 
命令序列
fi  

if  条件表达式
then  命令序列1(条件满足)
else  命令序列1(条件不满足)
fi

if  条件表达式1
then  命令序列1
elif 条件表达式2
then  命令序列2
······
else  命令序列(以上条件均不满足)
fi

#!/bin/bash                                      # ex.sh
read -p "Enter your score(0-100): " GRADE      # read命令
if [ $GRADE -ge 85 ] && [ $GRADE -le 100 ] ;then 
echo "$GRADE is Excellent"
elif [ $GRADE -ge 70 ] && [ $GRADE -le 84 ]
then echo "$GRADE is pass"
elif [ $GRADE -gt 100 ]
then echo "$GRADE is error"
elif [ $GRADE -lt 0 ]
then echo "$GRADE is error"
else
echo "$GRADE is fail"
fi                                             bash ex.sh    sh ex.sh    ./ex.sh

2.for控制语句
for 变量名 in 控制列表  
do
   命令序列
done

# vim name.txt  #每行只有一个用户
andy
barry
carl
sjd

#!/bin/bash                                        #user.sh
read -p "Enter the users password: " PASSWD  #读取密码,所有用户的密码设置相同 
for NAME in `cat name.txt`
do
   id $NAME &> /dev/null
   if [ $? -eq 0 ]
   then 
      echo "Already exists"
   else 
      useradd $NAME &> /dev/null
      echo "$PASSWD" | passwd --stdin $NAME &> /dev/null
      if [ $? -eq 0 ]
      then 
         echo "$NAME, create success"
      else 
         echo "$NAME, create failure"
      fi
   fi
done        bash user.sh   tail -n 4 /etc/passwd  查看新建用户信息  for NAME in `cat name.txt`  等
价于 for NAME in $(cat name.txt)   或者: EH= $(cat name.txt)   for NAME in $EH

3.while控制语句
while 条件表达式
do
   命令序列
done

#!/bin/bash                                  #guess.sh
PRICE=$(expr $RANDOM % 1000)     #或者  PRICE=`expr $RANDOM % 1000`
TIMES=0
echo "商品实际价格为0~999之间,猜猜看是多少?"
while true
do
   read -p "please input the value that you guess: " GU
   let TIMES++
   if [ $PRICE -eq $GU ]
   then echo "congratulations! your guess is accurate which is $PRICE"
        echo "the times that you guess is $TIMES"
        exit 0
   elif [ $GU -gt $PRICE ]
   then echo "your guess is bigger"
   else
        echo "your guess is lower"
   fi
done        bash guess.sh         $RANDOM为环境变量,系统随机产生一个随机数(范围为0~32767)。使用
expr命令取得后面表达式的结果。exit 0 跳出while循环。

4.case控制语句
case 变量值 in
模式1)
   命令序列1
;;
模式2)
   命令序列2
;;
······
*)
   默认命令序列
esac
当变量指都不符合以上的模式时,则执行默认命令序列。

#!/bin/bash                                          #exw.sh
read -p "please input a character: " KU
case $KU in
[a-z])
   echo "你输入的是字母!"
;;
[0-9])
   echo "你输入的是数字!"
;;
*)
   echo "你输入的是其它字符!"
esac       [a-z]  可以匹配所有大小写字母,并不仅仅只是小写字母,与上面矛盾(经试验证明)

5.计划任务服务程序
在指定的时间段自动启用或停止某些服务或命令,从而实现运维的自动化。
一次性计划任务:如今晚11:30开启网站服务   at 时间   设置一次性计划任务    at -l 查看还未执行的一次性计划任务   atrm 任务序号 删除对应的还未执行的一次性计划任务    # at 11:30    systemctl restart httpd   Ctrl+D组合键来结束计划任务的编写   这是采用交互的方式来实现一次性计划任务,可以利用管道符来直接实现: echo "systemctl restart httpd" | at 11:30    即可    然后就可以用at -l命令查看

长期性计划任务:如每周一3:25分把/home/luciusvorenus目录打包备份为backup.tar.gz          crontab -e 创建、编辑计划任务书   crontab -l 查看计划任务   注意:每一行只能写一条计划任务,且命令必须采用绝对路径的方式书写,如:/uer/bin/rm     可用whereis 或which命令查看  

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/385470.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

用户身份与文件的权限(普通权限、特殊权限、隐藏权限和文件控制列表ACL)

用户身份 root用户是存在于所有类UNIX操作系统中的超级用户,它拥有最高的系统所有权。root用户的用户身份号码UID为0,UID相当于用户的身份证号码一样,具有唯一性。管理员用户(超级用户)UID为0;系统用户UID为…

存储结构与磁盘划分

文件系统层次化标准(FHS,file system hierarchy standard) 在windows操作系统中,要找到一个文件需要先进入该文件所在的磁盘分区(如C:\等 C:\ZSX\zsx.txt),然后在进入该分区下的一个具…

Linux中常用文件的含义

在Linux中配置了服务文件后,需要重启该服务,配置信息才会生效。 /etc/passwd 保存了系统中所有用户的信息,一旦用户的登陆终端设置为/sbin/nologin,则不再允许登录到系统 /etc/shadow与/etc/passwd均为用户信息文件 /…

64. 最小路径和

给定一个包含非负整数的 m x n 网格,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。 说明:每次只能向下或者向右移动一步。 示例: 输入: [[1,3,1],[1,5,1],[4,2,1] ] 输出: 7 解释: 因为路径 1→3→1→1→1 的总和最小。…

Linux本地yum源配置以及使用yum源安装各种应用程序

将软件包传送到Linux中后,挂载,然后配置yum软件仓库,最后就可以使用yum来安装相应的应用程序了。假设挂载目录为/tmp/ruanjianbao,则下面说明配置本地yum仓库的过程: (1)cd /etc/yum.repos.d/…

gcc与g++编译器

首先在Linux(RHEL7.0)上安装gcc:yum install gcc gcc-c -y 其中gcc-c是为了能够编译c源代码,即g。 gcc为Linux C/C下重要的编译环境,是GUN项目中符合ANSIC标准的编译系统, gcc可以编译C、C、Objective-C、Java、Fortran、Pascal…

【Leetcode | 49】230. 二叉搜索树中第K小的元素

给定一个二叉搜索树,编写一个函数 kthSmallest 来查找其中第 k 个最小的元素。 说明: 你可以假设 k 总是有效的,1 ≤ k ≤ 二叉搜索树元素个数。 示例 1: 输入: root [3,1,4,null,2], k 1 3 / \ 1 4 \ 2 输出: 1 示例 2: 输入…

gcc编译器的整个工作过程

gcc hello.c ./a.out 或者 gcc hello.c -o hello ./hello ./表示执行当前目录下的可执行程序或脚本程序。 首先gcc需要调用预处理程序cpp,由它负责展开在源文件中定义的宏,并向其中插入“#include”语句所包含的内容;接着gcc会调用…

宏定义对调试代码的作用

以如下代码为例&#xff1a; //head.h #ifndef __HEAD_H__ #define __HEAD_H__#define NUM1 10 #define NUM2 20 #endif//sum.c #include <stdio.h> //直接在标准库中查找 #include "head.h" //先在工作目录中查找&#xff…

【第15章】多重继承

1. 虚基类介绍 多继承时很容易产生命名冲突&#xff0c;即使我们很小心地将所有类中的成员变量和成员函数都命名为不同的名字&#xff0c;命名冲突依然有可能发生&#xff0c;比如非常经典的菱形继承层次。如下图所示&#xff1a; 类A派生出类B和类C&#xff0c;类D继承自类B和…

gcc编译器与g++编译器的区别

gcc与g编译器的程序文件分别为&#xff1a;/usr/bin/g和/usr/bin/gcc。 gcc 和 GCC 是两个不同的东西&#xff0c;GCC:GNU Compiler Collection(GUN 编译器集合)&#xff0c;它可以编译C、C、JAV、Fortran、Pascal、Object-C、Ada等语言。gcc是GCC中的GUN C Compiler&#xff0…

1. 排序算法

一、概述 假定在待排序的记录序列中&#xff0c;存在多个具有相同的关键字的记录&#xff0c;若经过排序&#xff0c;这些记录的相对次序保持不变&#xff0c;即在原序列中&#xff0c;r[i]r[j]&#xff0c;且r[i]在r[j]之前&#xff0c;而在排序后的序列中&#xff0c;r[i]仍…

1036. 跟奥巴马一起编程(15)

美国总统奥巴马不仅呼吁所有人都学习编程&#xff0c;甚至以身作则编写代码&#xff0c;成为美国历史上首位编写计算机代码的总统。2014年底&#xff0c;为庆祝“计算机科学教育周”正式启动&#xff0c;奥巴马编写了很简单的计算机代码&#xff1a;在屏幕上画一个正方形。现在…

库文件与头文件

首先说明库文件与头文件在gcc中的具体使用方法&#xff0c;然后说明两者的区别与联系。 库文件即库函数&#xff0c;如printf和scanf函数。以libgtdf.so库文件为例&#xff08;库文件在命名时都以lib开头&#xff0c;因此使用-l选项去链接指定的库文件时可以省略lib三个字母&am…

gcc的常用参数

-c 编译成目标文件.o&#xff08;只编译不链接&#xff09; gcc -c hello.s -o hello.o -o 指出输出文件名&#xff0c;输出文件名跟在-o后面。如果不使用这一选项&#xff0c;则缺省的输出文件名为a.out。gcc hello.c -o hello.exe&#xff08;在Linux中该项后缀名无要求&a…

1027. 打印沙漏(20)

本题要求你写个程序把给定的符号打印成沙漏的形状。例如给定17个“*”&#xff0c;要求按下列格式打印 ************ *****所谓“沙漏形状”&#xff0c;是指每行输出奇数个符号&#xff1b;各行符号中心对齐&#xff1b;相邻两行符号数差2&#xff1b;符号数先从大到小顺序递减…

【C++ Priemr | 15】构造函数与拷贝控制

继承的构造函数 1. 简介&#xff1a; 子类为完成基类初始化&#xff0c;在C11之前&#xff0c;需要在初始化列表调用基类的构造函数&#xff0c;从而完成构造函数的传递。如果基类拥有多个构造函数&#xff0c;那么子类也需要实现多个与基类构造函数对应的构造函数。 class …

C命令行参数

C命令行参数的作用是在执行程序时&#xff0c;可以将命令行的参数传值给C程序内部&#xff0c;这样就可以从外部控制程序&#xff0c;而不是在代码内对这些值进行硬编码。命令行参数是使用main函数来处理的&#xff0c;argc是指参数的个数&#xff0c;为int类型&#xff1b;arg…

剖析数组名、函数名(不是指针常量,更不是指针)

对于一个数组&#xff0c;如 int a[4]; 如果只是给出数组名a&#xff0c;编译器不知道该取该数组的第几个元素&#xff0c;因此编译器不会自动取值&#xff0c;而是返回该数组的首地址&#xff08;第一个元素的地址&#xff09;。其实&#xff0c;数组名a就是数组本身&#xf…

【C++ Priemr | 15】面向对象程序设计

类型准换与继承 为了支持c的多态性&#xff0c;才用了动态绑定和静态绑定。 需要理解四个名词&#xff1a; 对象的静态类型&#xff1a;对象在声明时采用的类型&#xff0c;是在编译期确定的。对象的动态类型&#xff1a;目前所指对象的类型&#xff0c;是在运行期决定的。对…