LINUX--shell 脚本的应用

shell是什么

1.Shell: linux壳
2.Kernel: linux内核
在这里插入图片描述

常用的shell

  • Bourne Shell (sh)
  • • C Shell (csh)执行效率有点差,多用于交互
  • • Korn Shell (Bourne Shell 超集 ) (ksh)集合了 Cshell 和 Bourne shell 的优点并且和 Bourne shell 完全兼容

Bash配置文件

  • bash_history
    记录命令历史记录

  • bash_logout
    退出 Shell 时要执行的命令

  • bash_profile
    登入 Shell 时要执行的命令,只在会话开始时被读取一次

  • bashrc

每次打开新的 Shell 时要执行的命令
别名和函数之类通常放在该文件中

shell 变量

在这里插入图片描述

shell 脚本

Shell脚本编程特点

脚本语言往往是解释运行而非编译,即由解释器(Interpreter)读入脚本程序代码,将其转换成内部的形式执行,而解释器本身则是编译型程序。

Shell脚本语言是Linux/UNIX系统上一种重要的脚本语言,在Linux/UNIX领域应用极为广泛,熟练掌握Shell脚本语言是一个优秀的Linux/UNIX开发者和系统管理员的必经之路。利用Shell脚本语言可以简洁地实现复杂的操作,而且Shell脚本程序往往可以在不同版本的Linux/UNIX系统上通用

脚本编辑和运行过程

  • 编辑文件
    可使用vim, gedit, kate等文本编辑器。保存文件,一般地将文件保存为***.sh
  • 赋予文件可执行权限
    – chmod +x ***.sh
  • 运行及排错
    – 运行方式:./***.sh (当前目录下运行)或者 sh ***.sh, bash ***.sh (取决你用哪种shell)

shell脚本编写

在这里插入图片描述
在这里插入图片描述

一个交互式设计

Teminal下读入你的名字,并欢迎

#!/bin/bash
echo "What's your name?"
read name
echo "Welcome,$name"

命令集

编写一个 Shell 程序 mkf,此程序的功能:显示 root 下的文件信息,然后建立一个 kk 的文件夹,在此文件夹下建立一个文件 aa,修改此文件的权限为可执行。

a.sh 
cd /root
mkdir kk
cd kk
vi aa
chmod +x aa
cd /root

命令参数

shell 脚本语法

变量

一个bash变量默认是一个字符串,但可以把一个变量定义为一个整形值、数组和函数,可以使用declare和typeset命令来声明变量,对它们初始化,并设定它们的属性。

语法:declare [options] [name[=value]]
typeset [options] [name[=value]]
用途:声明变量、初始化变量、设置变量属性

在这里插入图片描述

读写变量

  • 变量赋值 变量名=值

注意等号=两侧没有空格,如果值有空格,必须用引号

  • 访问变量值 $变量名
a="How are you"
echo "He just said: $a"
  • 从键盘读入变量值/屏幕输出
read a
echo "you just input $a"

read var1 var2 ...
read –p “string” var1 var2 … varn
echo $var1 $var2

echo的高级使用

更多命令选项

-n 输完后不换行
-e 激活特殊字符/设置
-E 关闭特殊字符/设置(默认)

各种颜色字符输出

echo -e "\033[字背景颜色;字体颜色m字符串\033[0m"

在这里插入图片描述

在这里插入图片描述

ANSI控制码的说明
\33[0m 关闭所有属性
\33[1m 设置高亮度
\33[4m 下划线
\33[5m 闪烁
\33[7m 反显
\33[8m 消隐
\33[30m --\33[37m 设置前景色
\33[40m – \33[47m 设置背景色
\33[nA 光标上移n行 \33[nB 光标下移n行 \33[nC 光标右移n行 \33[nD 光标左移n行 \33[y;xH设置光标位置
\33[2J 清屏
\33[K 清除从光标到行尾的内容
\33[s 保存光标位置
\33[u 恢复光标位置
\33[?25l 隐藏光标
\33[?25h 显示光标

字符串操作

  1. 判断读取字符串值
    在这里插入图片描述
    2.字符串操作(长度,读取,替换)
    在这里插入图片描述

数组

1.赋值
(1) array=(var1 var2 var3 ... varN)
(2) array=([0]=var1 [1]=var2... [n]=varN)
(3) array[0]=var1
array[1]=var2
...
array[n]=varN

引用数组
echo ${array[n]}
计算数组元素个数
${#array[*]}

#!/bin/bash    ##声明bahs
names=(xiaoming daxiong [10]=yadam)
echo ${names[1]} ${names[10]}
declare -a arr[10]  ## 声明是一个数组
arr[0]=ifcen
arr[2]=ocen
arr[4]=earth
echo ${arr[4]}     ##结果:earth
echo ${arr[*]}   ##打印全部

表达式

  • 数字运算

expr integer operator integer
其中operator为 +、-、*、/、% (取余数), 但对 * 的使用要 的使用要用转义符,如:

expr 4 \* 5
20 
int=`expr 5 + 7`
echo $int
12

1.注意 ` 是左上角esc下面的那个键。这叫倒引号(backticks),里面是命令,会执行
2.注意,这里每一个数字和符号均为参数,它们之间要用空格分开

更多的bash运算
+, -, *, /, %取模(取余), **(乘方)
实现算术运算:

(1) let var=算术表达式
(2) var=$[算术表达式]
(3) var=$((算术表达式)) //推荐使用这种类C风格
(4) var=$(expr arg1 arg2 arg3 ...)
(5) declare –i var = 数值
(6) echo ‘算术表达式’ | bc

注意:乘法符号有些场景中需要转义,如*
bash有内建的随机数生成器:$RANDOM(0-32767)

Guess you like

Origin blog.csdn.net/weixin_51552144/article/details/116998443