03-Linux编程

03-Linux编程

思维导图下载链接

what

why

  • how

shell bash

解释器

  • 用户交互输入
  • 文本文件输入

启动器

读取方式

当前shell

  • source test.txt
  • . test.txt

新建子shell

  • /bin/bash file
  • ./file

脚本本质

#!/bin/bash

#!/usr/bin/python

命令

pstree(进程树)

echo

  • echo $$

    • 当前进程ID号
  • echo -e

    • 识别换行符

exec

  • exec ls -l /

    • 执行命令后退出
  • exec 9<> /dev/tcp/www.baidu.com/80

  • echo -e “GET / HTTP/1.0\n” 1>&9

  • cat 0<& 9

函数

一切皆命令

ooxx(){echo $$}

  • ooxx

文本流&重定向

重定向:不是命令

程序本身都有I/O

  • cd /proc/**/fd
  • 0:标准输入
  • 1:标准输出
  • 2:错误输出

一切皆文件

  • /proc/$$/fd

    • exec 6>&1

      • 备份
    • exec 1 > /dev/pts/1

      • 更改输入
    • exec 1>&6

      • 恢复

控制程序I/O位置

输出实例

  • ls -l / 1> ls.out

    • 将ls1标准输出流重定向为文件,注意(1>不能含有空格)
  • ls -l / 1>> ls.out

    • 将ls1标准输出流重定向为文件,注意(1>不能含有空格)>>追加
  • ls -l /bucunzai 2> x.out

    • 错误输出
  • ls -l /usr /bucunzai 1> ls1.ouot 2>ls2.out

    • 错误和正确分别输出
  • ls -l /usr /bucunzai 1>> ls3.ouot 2>>ls2out

    • 错误和正确输出同一文件
  • ls -l /bucunzai /usr 2>&1 1> ls4.out

    • 把2重定向1时,1前面要加&(错误写法)

    • ls -l /bucunzai /usr 1>ls5.out 2>&1

      • 把2重定向1时,1前面要加&,(正确写法)
  • ls -l /god /usr >& ls6.out

    • 正确错误都输出
  • ls -l /god /usr &> ls7.out

    • 正确错误都输出

输入实例

    • read sxt
    • echo $sxt
    • read sxt 0<<<“sdfsdf”

      • 一行文本
    • read sxt 0<<ooxx

      • (多行文本)表示开启阻塞模式,直至输入ooxx为止阻塞停止,但是读取时只读回车符前内容
    • cat 0< x.sh

      • 一个<放文本,两多行,三个一行

变量

本地

  • 当前shell拥有
  • 生命周期随shell
  • ame=god

局部

  • 只能local用于函数
  • val=100

位置

  • $1, 2 , 2, {11}
  • 脚本
  • 函数

特殊

  • $#

    • 参数个数
  • $1

    • 第一个参数

      • ${11}第十一个参数
  • $*

    • 参数列表,双引号引用为一个字符串
  • $@

    • 参数列表,双引号引用为单独的字符串
  • $$

    • 当前shell的PID
  • $?

    • 上一个命令退出状态

环境变量

  • export

    • 定义变量
  • unset

    • 取消变量
  • set

    • 查看shell的变量

引用&命令替换

引用

  • 双引号

    • 弱引用,参数扩展("$d"可以取值)
  • 单引号

    • 强引用,不可嵌套(’$d’不取值)
  • 花括号扩展不能被引用

  • 命令执行前删除引用

命令替换

  • 反引号:ls -l /

    • lines=ls -l / | wc -l
  • $(ls -l /)

  • 可以嵌套

退出状态&逻辑判断

退出状态

  • echo $?

逻辑判断

  • command1 && command2
  • command1 || command2

实例

  • 代码
  • 使用

算术表达式

let

  • let C= A + A+ B

$

  • C= [ [ A+$B]
  • C=$(A+B)

expr

  • C=expr $A + $B

条件表达式

  • test

    • tset 3 -gt 8
  • []

    • [ 3 -gt 8 ]

流程控制

if

  • if [ 3 -gt 8 ] ; then echo ok; else echo no ok; fi

while

  • while ls /god; do echo ok;rm -rf /god; done

for

  • for ((i=0;i<10;i++));do echo $i; done
  • for i in bjsxt shsxt;do echo $i; done
  • forfor i in “bj sxt” “sh sxt”;do echo $i; done

case

  • 代码

  • 方法
  • 扩展
发布了20 篇原创文章 · 获赞 1 · 访问量 268

猜你喜欢

转载自blog.csdn.net/weixin_43555997/article/details/104150606
今日推荐