虚拟机重启错误
  1. 原因:由于磁盘有损坏
  2. 修复磁盘:
    step1:回车后输入root密码
    step2:fsck /dev/sda2
    step3:fix? yes
    step 4:reboot
shell基础编程
  1. shell程序介绍
    (1)shell程序时已文件形式存放批量的linux命令集合,该文件能够被shell解释执行,这种文件就是shell脚本程序,shell文件是文本文件
    (2)shell程序通常由一段Linux命令,Shell命令、控制语句以及注释语句构成
    (3)shell脚本是纯文本文件,可以使用任何编译器编写,通常以.sh作为后缀名
    (4)第一行:指定用哪个程序来编译和执行脚本
    #!/bin/bash
    #!/bin/sh
    (4)除第一行外,使用#表示注释
    (5)执行脚本的三种方式
    ① $ ./test.sh
    ② $ . test.sh
    ③ $ sh test.sh
  2. 变量的使用
    (1)变量名必以字母或下划线开头,后面可以跟字母,数字或下划线。
    (2)对大小写敏感
    (3)变量的赋值(等号两边不能有空格):$ x=123
    变量值的回显:$ echo $ {sex}或$ echo $sex
    (4)变量作用域
    本地变量:只在创建它们的shell程序可用
    环境变量(全局变量):在shell的所有用户进程中可用,如果父shell进程产生了子shell进程,则环境变量可被“继承”并复制。环境变量按照惯例需要大写
    (5)清除变量:unset variable
    (6)显示所有变量:set
  3. 位置参量
    (1)位置参量是一组特殊的内置变量,通常被shell脚本用来从命令行接收参数,或被函数用来保存传递给它的参数
    (2)执行shell脚本时,用户可以通过命令行向脚本传递信息,跟在脚本后面的用空格隔开的字符串都成为位置参量
    (3)脚本使用这些参数时,需要通过位置参量引用:$ 1表示第一个参数,$ 2表示第二个参数,从$ {10}开始,需要用花括号括起来
    (4)表示位置参数的个数:$ #
    (5)以单个字符串显示所有位置参量:$ *
    (6)脚本运行的当前进程号:$ $
    (7)表示最后一个后台运行的进程的进程号:$ !
    (8)显示前面最后一个命令的退出状态,0表示没有错误,其他任何值表示有错误:$ ?
    应用中通常会在关键步骤后判定$?,以确定关键步骤的执行是否正常。尤其是调度系统里需要监控sh返回码
    shell脚本的返回码取决于最后一个命令的返回码
    (9)如果位置参数中有空格,需要用引号引起
  4. 数组
$ arr=(zhangsan lisi wangwu)  //数组赋值
$ echo ${arr[0]}  //读取数组中第一个元素
$ echo ${arr[*]}  //显示数组中的所有字符
$ echo ${#arr[*]}  //显示数组中字符个数
$ arr[0]=zhaoliu  //更改第一位元素
  1. date(时间)

(1)e.g.以年月日时分表的形式展示时间

$ date +%Y/%m/%dT%H:%M:%S

(2)显示时间变量

date1=$(date +%Y/%m/%dT%H:%M:%S)
echo ${date1}

(3)显示两天前的日期

date2=$(date --date='2 days ago' +%Y/%m/%d)
echo ${date2}

(3)显示一天后的日期

date3=$(date --date='-1 days ago' +%Y/%m/%d)
//或
date3=$(date --date='1 days' +%Y/%m/%d)
echo ${date3}

(4)查看日历

$ cal 12 2020
  1. 判断

【1】文档类型的判断
(1)判断某个文件是否存在:test -e filename
或:[-e filename]
(2)判断某个文档是否存在且为档案:test - f filename
(3)判断某个文件是否存在且为目录:test -d filename
【2】文档权限的判断
(1)判断某个文档是否有可读权限:-r
(2)判断某个文档是否有可写权限:-w
(3)判断某个文档是否有可执行权限:-x
【3】两个整数间的判定
(1)两数值相等:-eq
(2)两数值不等:-ne
(3)n1大于n2:-gt
(4)n1小于n2:-lt
【4】判定字符串的数据
(1)判断字符串是否为0,若为空则true:test -z string
(2)判断字符串是否非0莫若为空则false:test -n string
(3)判断str1是否等于str2,若相等则返回true:test str1=str2
(4)判断str1是否不等于str2,若相等则返回false:test str1!=str2
(5)if判断

if...; then...;
elif...;then...;
else...;
fi

7.循环
【1】for循环
(1)

for var in 1 2 3 4 5
do
    echo ${var}
done

(2)

num=10
s=0
for((i=0; i<${num}; i=i+1))
do
    s=$((${s}+${i}))
done

【2】while循环

while[condition]
do
    程序段落
done

【3】until循环

until[condition]
do
    程序段落
done

【4】while read line 从文件或命令中逐行读取

(1)

cat file | while read line
do 
echo $line
done

(2)

cat 'ls ./*.txt' | while read line
do echo $line
done