Shell脚本和编程|青训营笔记

117 阅读1分钟

Shell脚本和编程

1、Shell基本概念

在计算机科学中,Shell俗称壳(用来区别于核),是指“为使用者提供操作界面”的软件(command interpreter,命令解析器)。它类似于DOS下的COMMAND.COM和后来的cmd.exe。它接收用户命令,然后调用相应的应用程序。

同时它又是一种程序设计语言。作为命令语言,它交互式解释和执行用户输入的命令或者自动地解释和执行预先设定好的一连串的命令;作为程序设计语言,它定义了各种变量和参数,并提供了许多在高级语言中才具有的控制结构,包括循环和分支。

文字操作系统与外部最主要的接口就叫做shell。shell是操作系统最外面的一层。shell管理你与操作系统之间的交互:等待你输入,向操作系统解释你的输入,并且处理各种各样的操作系统的输出结果。

image.png

image.png

2、语法和命令

命令执行

``或$()

$ echo `date`
2020年 02月 27日 星期四 19:37:25 CST
$ echo $(date)
2020年 02月 27日 星期四 19:37:40 CST

算术运算 $(())

$ echo $((11*11))
121
系统环境变量

image.png

运算符和引用

image.png

管道

语法: cmd1|cmd2 !!!管道命令仅仅处理stdout,对于stderr会予以忽略,可以使用set -o pipefail设置shell遇到管道错误退出。

image.png

重定向
输出重定向符号
>:覆盖写入文件
>>:追加写入文件
2>:错误输出写入文件
&>:正确和错误输出统一写入到文件中
输入重定向符号
<
<<

image.png

判断命令

find

一般格式

find pathname -options [-print -exec -ok ...]

image.png

image.png

注意:

①中括号前后要有空格符

②[和test是命令,只能使用自己支持的标志位,<、>、=只能用来比较字符串

③中括号内的变量,最好都是用引号括起来

④[[更丰富,在整型比较中支持<、>、=,在字符串比较中支持=~正则

循环

for

#! /bin/bash
for VAR in dog cat rabbit; do
  echo "I like $VAR"
done

while

#! /bin/bash
echo 'ENTER the password'
NUM=1
while [ $NUM -le 5 ]; do
  read TRY
  if [ $TRY = "secret" ]; then
    echo 'login sucess'
    break
  else 
    NUM=$(($NUM+1))
    echo 'try again'
  fi
done
echo 'try too many'
模块化

个人总结

Shell里面有太多的知识点了,很零碎,又很多,掌握还是需要花费一定的功夫的......