精华内容
下载资源
问答
  • 计算机通过你在Shell输入打开音乐的命令,Shell在告诉操作系统内核用户希望打开音乐,内核在通过cpu调度、内存管理、磁盘输入输出等工作,将硬件调动,这时硬件声卡才会工作,硬件才实际工作者。...

    shell脚本的概述

    一、什么是shell?

    就是与内核沟通的界面、应用程序、KDE等等。比如你要播放音乐,你的计算机通过你在Shell输入的打开音乐的命令,Shell在告诉操作系统的内核用户希望打开音乐,内核在通过cpu调度、内存管理、磁盘输入输出等工作,将硬件调动,这时硬件声卡才会工作,硬件才是实际的工作者。

    将要执行的命令按顺序保存到一个文本文件

    给该文件可执行权限

    可结合各种Shell控制语句以完成更复杂的操作

    二、shell的作用

    Shell (壳程序)是一个特殊的应用程序,它介于操作系统内核与用户之间,充当了一个“命令解释器”的角色,负责接收用户输入的操作指令(命令)并进行解释,将需要执行的操作传递给内核执行,并输出执行结果。

    介于系统内核与用户之间,充当“翻译官”,负责解释命令行

    在这里插入图片描述

    三、Linux中有哪些Shell?

    查看Linux中有那些Shell,我们可以查看下/etc/shells这个文件,里面就是Linux所包含的shell

    最常用的就是bash、tcsh、csh、sh、nologin这些shell。这些shell都是依据Linux发展者的不同所创造出的不同版本。

    bash:基准于GNU的框架下发展出的Shell。.

    csh: 语法有点类似于c语言的Shell。

    tcsh: 整合了csh,提供更多的功能。

    sh:已经被bash所替换。

    nologin: 奇怪的shell,这个shell可以让用户无法登录主机。

    注: bash ( /bin/bash) 是目前大多数Linux 版本采用的默认Shell。

    在这里插入图片描述
    为什么系统上合法的Shell要写入/etc/shells这个文件呢?

    这是因为系统某些服务运行过程中,会去检查用户能够使用的Shell,而这些shell的查询就是借由/etc/shells这个文件。

    用户什么时候可以取得shell来工作?用户默认会取得哪一-个shell?

    当用户登录的时候,系统就会给我一个shell让我来用,而这个登录取得的Shell就记录在/etc/passwd这个文件内

    四、Shell脚本的构成

    1.脚本申明(解释器) :若第一行为“#!/bin/bash”, 表示此行以下的代码语句是通过/bin/bash程序来解释执行

    #!/bin/bash为默认解释器。还有其它类型的解释器,比如 # !/usr/bin/python#!/usr/bin/expect

    2.注释信息:以“#”开头的语句表示为注释信息,被注释的语句在运行脚本时不会被执行。

    3.可执行语句:比如echo命令,用于输出" "之间的字符串

    五、脚本文件执行操作

    1.编写脚本代码

    使用vim文本编辑器

    每行一条Linux命令,按执行顺序依次编写

    vim /root/first.sh
    #! /bin/bash
    #author is cxy 2021-05-08
    # this is my first Shell.
    cd /boot
    echo "当前的目录位于:"
    pwd
    echo "其中以vml 开头的文件包括:"
    ls -lh vml*
    

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

    2.Shell脚本的执行

    shell脚本执行有两种方法,如下:

    方法一: 指定路径的命令,要求文件必须有x权限。
    chmod +x /root/first.sh     给脚本 文件具有执行的权限
    指定绝对路径: /root/first.sh
    指定相对路径: . /first.sh
    
    

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

    在这里插入图片描述

    方法二:指定Shel1来解释脚本,不要求文件必须有x权限。
    sh脚本路径: sh first.sh
    source  脚本路径: . first.sh或者source first.sh 
    

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

    在这里插入图片描述

    3.管道操作命令 |

    将管道符号“|”左侧的命令输出的结果,作为右侧命令的输入(处理对象),同一行命令中可以使用多个管道。

    ps aux | WC-l
    echo "abc123" | passwd -- stdin zhangsan
    

    在这里插入图片描述

    在这里插入图片描述

    重定向操作命令

    交互式硬件设备

    标准输入:从该设备接收用户输入的数据

    标准输出:通过该设备向用户输出数据

    标准错误:通过该设备报告执行出错信息

    类型 设备文件 文件描述编号 默认设备
    标准输入 /dev/stdin 0 键盘
    标准输出 /dev/stdout 1 显示器
    标准错误输出 /dev/stderr 2 显示器

    重定向操作

    类型 操作符 用途
    重定向输入 < 从指定的文件读取数据
    重定向输出 > 将标准输出结果保存到指定的文件,并且覆盖原有内容
    重定向输出 >> 将标准输出结果追加到指定的文件的尾部,不覆盖原有内容
    标准错误输出 2> 将错误信息保存到指定的文件,并且覆盖原有内容
    标准错误输出 2>> 将错误信息追加到指定的文件的尾部,不覆盖原有内容
    混合输出 &> 将标准输出、标准错误保存到同一文件中
    混合输出 2>&1 将标准错误输出重定向到标准输出

    重定向输出实验操作
    在这里插入图片描述
    标准错误输出实验操作
    在这里插入图片描述
    重定向输入实验操作

    echo "123456" > passwd.txt
    passwd -- stdin jl < pass.txt
    #从pass.txt 文件中取密码,需要注意SELinux 会影响此命令执行,若执行失败可尝试关闭SELinux(setenforce 0
    

    在这里插入图片描述
    混合输出操作

    在这里插入图片描述

    ls -lh > log.txt 2>&1   等同于   ls -lh &> log.txt
    本来1-->屏幕( 1指向屏幕)
    执行>log后,1-->1og.txt (1指向log.txt)
    执行2>&1后,2-->1 (2指向1,而1指向log.txt,因此2也指向了log.txt)
    

    在这里插入图片描述

    在这里插入图片描述

    六、shell的变量

    变量的作用

    用来存放系统和用户需要使用的特定参数(值)

    变量名:使用固定的名称,由系统预设或用户定义

    变量值:能够根据用户设置、系统环境的变化而变化

    变量的分类

    自定义变量: 由用户自己定义、修改和使用

    环境变量: 由系统维护,用于设置工作环境

    位置变量: 通过命令行给脚本程序传递参数

    预定义变量: Bash中内置的一类变量,不能直接修改

    定义一个新的变量

    变量名以字母或下戈划线开头,区分大小写,建议全大写

    变量名=变量值

    查看变量的值

    格式:echo $变量名
    [root@localhost ~]#Product=Python
    [root@localhost ~]#Version=2.7.13
    [root@localhost ~]#echo $Product
    Python
    [root@localhost ~]#echo $Product $Version
    Python 2.7.13
    echo ${Product}2.7.13
    

    在这里插入图片描述

    赋值时使用引号

    双引号:允许通过 $ 符号引用其他变量值
    在这里插入图片描述

    单引号:禁止引用其他变量值,$ 视为普通字符
    在这里插入图片描述

    反撇号:命令替换,提取命令执行后的输出结果,·…· 和 $(…) 作用相同
    在这里插入图片描述

    从键盘输入内容为变量赋值

    read [-p “提示信息”] 变量名

    read命令获取输入内容

    方法一:
    read  -p "提示信息"变量名
    echo $ 变量名
    

    在这里插入图片描述

    方法二:
    echo -n "提示信息"
    read 变量名
    echo $ 变量名
    

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

    变量的作用范围

    默认情况下,新定义的变量只在当前的Shell环境中有效,因此称为局部变量。当进入子程序或新的子Shel1环境时,局部变量将无法再使用。

    可以通过内部命令export将指定的变量导出为全局变量,使用户定义的变量在所有的子Shell环境中能够继续使用。

    全局变量操作

    格式1: export 变量名
    格式2: export 变量名=变量值

    可以使用pstree命令查看Shell环境,
    输入bash命令进入子Shell环境,
    按Ctrl+ D组合键或输入exit命令退出子Shell环境
    export product version                  导出为全局变量
    bash
    echo "Sproduct $version"                 子程序引用全局变量
    
    

    在这里插入图片描述

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

    整数变量的运算

    格式: expr 变量1  运算符  变量2  [运算符 变量3]

    运算符:+加法、一减法、\ *乘法、/除法、%取余

    expr 12 \ * 5

    常用的逐算表达式:

    i= $ (expr 12 \* 5)
    i= $ ((12 * 5))
    i= $ [12 * 5]
    let i=12 * 5
    i++相当于i= $ [ $ i+1]
    i-- 相当于i= $ [ $ i-1]
    i+=2相当于i=$ [ $ i+2 ]
    
    默认shell环境中expr只能用于整数变量运算

    在这里插入图片描述

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

    浮点运算操作命令

    bash不支持浮点运算,如果需要进行浮点运算,需要借助bc,awk处理。

    #!/bin/bash
    
    #加
    f=$ (echo "4.3+2.5" |bc)
    echo "4.3+2.5=$ f"
    
    #减
    f=$ (echo "4.3-2.5" |bc)
    echo "4.3-2.5=$ f"
    
    #乘
    f=$ (echo "4.30*2. 50" |bc)
    echo "4.3*2.5=$ f"
    
    #除
    f=$ (echo "scale=2;4.3/2.5" |bc)
    echo "4.3/2.5=$ f"
    
    #混合运算
    f=$ (echo "2.2/ (2.2-1.1) *2+1.1"|bc)
    echo "2.2/ (2.2-1.1) *2+1.1=$f"
    

    在这里插入图片描述

    在这里插入图片描述

    环境变量

    环境变量由系统提前创建,用来设置用户的工作环境

    使用env命令可以查看到当前工作环境下的环境变量

    常见的环境变量:

    PWD、PATH、USER、SHELL、HOME

    USER表示用户名称

    HOME表示用户的宿主目录

    LANG表示语言和字符集

    PWD表示当前所在的工作目录

    PATH表示可执行程序的默认搜索路径

    echo $PATH                     查看当前搜索路径
    PATH="$PATH:/root"           /root目录添加到搜索路径
    export PATH="SPATH:/root"     输出为全局环境变量
    first.sh
    

    环境变量的全局配置文件为/etc/profile,在此文件中定义的变量作用于所有用户。每个用户还有自己的独立配置文件(~/ .bash_ profile) 。可以用来长期变更或设置某个环境变量。

    vim /root/.bash_ profile
    export HISTSIZE=200                     修改root用户的历史命令记录条数
    
    echo $HISTSIZE
    source /root/.bash_ profile             读取并执行文件中的设置
    echo $HISTSIZE
    

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

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

    只读变量

    readonly                              命令设置只读变量
    product=benet
    readonly product                      设置为只读变量
    echo Sproduct
    product=accp                          只读变量不可以被重新赋值
    unset product                         只读变量不可以被删除,unset命令用于删除变量
    

    在这里插入图片描述

    位置变量

    当执行命令行操作时,第一个字段表示命令名或脚本程序名,其余的字符串参数按照从左到右的顺序依次赋值给位置变量。

    $ n: n为数字,$ 0代表命令本身,$ 1-$ 9代表带一个到第九个参数,十以上的参数需要使用大括号表示,比如第十个参数为$ {10}

    vim addnum.sh
    num1=$1
    num2=$2
    sum=$( ($num1 + $num2) )
    echo $sum
    ./addnum.sh 12 34 
       $0       $1 $2
    

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

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

    在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    不过不建议把位置变量直接拿过来用,这样不好再对数值进行处理,还是把位置变量赋值自定义变量,这要对数值方便进行处理

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

    预定义变量

    $ * 、$ @:表示命令或脚本要处理的参数。

    $ * : 把所有参数看成以空格分隔的一一个字符串整体(单字符串)返回,代表"$ 1  $ 2  $ 3  $ 4"。

    $ @:把各个参数加上双引号分隔成n份的参数列表,每个参数作为一个字符串返回,代表"$1" “$2” “$3” “$4”。

    $0:表示当前执行的脚本或命令的名称。

    $#:表示命令或脚本要处理的参数的个数。

    $?:表示前一-条命令或脚本执行后的返回状态码,返回值为0表示执行正确,返回任何非0值均表示执行出现异常。也常被用于Shell脚本中return退出函数并返回的退出值。

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

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

    vim mybak.sh
    #!/bin/bash
    time=backup-`date +%F`.tgz
    tar zcf $time $* &> /dev/null         #/dev/nu1l表示的是-一个黑洞文件,通常用于丢弃不需要的数据输出
    echo "已执行 $0 脚本,"
    echo"共完成 $# 个对象的备份"
    echo "具体内容包括: $*"
    

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

    在这里插入图片描述

    在这里插入图片描述

    展开全文
  • 初级部分4shell及环境变量简介 Kernel 系统内核用于在计算机启动时载入基本内存 管理基本输入输出管理进程初始化和进程调度 Shell 系统的命令解释器翻译成中文也就叫壳,外壳意思就是最表面,用于操作系统与用户...
  • Linux常用的命令

    2014-09-21 19:43:32
    command1| command2 command1的输出是command2的输入 DNS全球通用的: 8.8.8.8 DHCP :动态分配IP地址 255.255.255 网络段 0 主机 ifconfig –a 查看所有网卡 mask 子网掩码,分辨网络地址,与主机地址 改IP地址: /...
  • Dos命令大全

    2013-01-08 15:33:00
    最后,您可以用 FOR /F 命令来分析命令的输出。方法,将 括号之间的 filenameset 变成一个反括字符串。该字符串会 被当作命令行,传递到一个子 CMD.EXE,其输出会被抓进 内存,并被当作文件分析。因此,以下例子: ...
  • 一、主函数参数 主函数:int main(int argc ,char *argv[],char *envp[]); argc:参数列表中参数个数,一个进程启动时,主函数至少会传递...缓冲区是内存空间一部分。也就是说,在内存空间中预留了一定...

    一、主函数的参数

    主函数:int main(int argc ,char *argv[],char *envp[]);

    argc:参数列表中参数的个数,一个进程启动时,主函数至少会传递一个参数,argv[0]=启动这个进程的命令

    argv:给主函数传递的参数列表

    envp:传递的环境变量

    二、输出缓冲区

    1.什么是缓冲区?

    缓冲区是内存空间的一部分。也就是说,在内存空间中预留了一定的存储空间,这些存储空间用来缓冲输入或输出的数据,这部分预留的空间就叫做缓冲区,显然缓冲区是具有一定大小的。缓冲区根据其对应的是输入设备还是输出设备,分为输入缓冲区和输出缓冲区。

    2.为什么会有缓冲区?

    高速设备与低速设备的不匹配,势必会让高速设备花时间等待低速设备,我们可以在这两者之间设立一个缓冲区,用来存放临时数据。

    缓冲区的作用:

    (1)可以解除输入输出设备和计算机CPU之间的制约关系,数据可以直接送往缓冲区,高速设备不用再等待低速设备,提高了计算机的效率。例如:我们使用打印机打印文档,由于打印机的打印速度相对较慢,我们先把文档输出到打印机相应的缓冲区,打印机再自行逐步打印,这时我们的CPU可以处理别的事情。

    (2)可以减少数据的读写次数,如果每次数据只传输一点数据,就需要传送很多次,这样会浪费很多时间,因为开始读写与终止读写所需要的时间很长,如果将数据送往缓冲区,待缓冲区满后再进行传送会大大减少读写次数,这样就可以节省很多时间。例如:我们想将数据写入到磁盘中,不是立马将数据写到磁盘中,而是先输入缓冲区中,当缓冲区满了以后,再将数据写入到磁盘中,这样就可以减少磁盘的读写次数,不然磁盘很容易坏掉。

    总的来说,缓冲区就是一块内存区,它用在输入输出设备和CPU之间,用来存储数据。它使得低速的输入输出设备和高速的CPU能够协调工作,避免低速的输入输出设备占用CPU,解放出CPU,使其能够高效率工作。

    3.printf()并不是往界面上显示的,而是先放到输出缓冲区

    scanf()从输入缓冲区中获取

    4.输出缓冲区刷新条件(将数据输出到内存中,当满足以下四个条件时,才会将缓冲区中的数据显示到界面上):

    (1)遇到回车“\n”

    (2)程序结束

    exit(int ):结束进程时会刷新缓冲区   

    _exit(int ):结束进程直接释放空间,而不刷新缓冲区,不执行注册的的退出函数

    atexit(void (*fun)() fun):注册退出函数,注册进程退出时调用的函数,系统默认能注册32个函数

    (3)主动刷新fflush(stdout)

    (4)缓冲区满(默认1024字节)

    5.缓冲和缓存的区别

     CPU的Cache,它中文名称是高速缓冲存储器,读写速度很快,几乎与CPU一样。由于CPU的运算速度太快,内存的数据存取速度无法跟上CPU的速度,所以在cpu与内存间设置了cache为cpu的数据快取区。当计算机执行程序时,数据与地址管理部件会预测可能要用到的数据和指令,并将这些数据和指令预先从内存中读出送到Cache。一旦需要时,先检查Cache,若有就从Cache中读取,若无再访问内存,现在的CPU还有一级cache,二级cache。简单来说,Cache就是用来解决CPU与内存之间速度不匹配的问题,避免内存与辅助内存频繁存取数据,这样就提高了系统的执行效率。

    缓冲的核心作用是用来缓冲,缓和冲击。比如你每秒要写100次硬盘,对系统冲击很大,浪费了大量时间在忙着处理开始写和结束写这两件事嘛。用个buffer暂存起来,变成每10秒写一次硬盘,对系统的冲击就很小,写入效率高了,极大缓和了冲击。

    缓存的核心作用是加快取用的速度。比如你一个很复杂的计算做完了,下次还要用结果,就把结果放手边一个好拿的地方存着,下次不用再算了。加快了数据取用的速度。

    简单来说就是buffer偏重于写,而cache偏重于读。

    展开全文
  • 入门学习Linux常用必会60个命令实例详解doc/txt

    千次下载 热门讨论 2011-06-09 00:08:45
    umount 命令是mount命令逆操作,它参数和使用方法和mount命令是一样。Linux挂装CD-ROM后,会锁定CD—ROM,这样就不能用CD- ROM面板上Eject按钮弹出它。但是,当不再需要光盘时,如果已将/cdrom作为符号链接...
  • [0023] 步骤102:该序列号烧录程序接收到用户输入读取基本输入输出系统命令,并获取读取长度;设置该序列号烧录程序全局描述表,打开可以访问4GB内存的总线,该序列号烧录程序访问4GB内存地址,加载上述全局描述...
  • 你必须知道495个C语言问题

    千次下载 热门讨论 2015-05-08 11:09:25
    1.4 新64位机上64位类型是什么? 指针声明 1.5 这样声明有什么问题?char*p1,p2;我在使用p2时候报错了。 1.6 我想声明一个指针,并为它分配一些空间,但却不行。这样代码有什么问题?char*p;*p=...
  • 42、静态变量和实例变量的区别? 我的答案: 静态变量域用final修饰,每次都被调用 实例变量则不会 43、IE、FF下面CSS的解释区别 我的答案: 自己编的 44、web前端技术你了解哪些技术? 我的答案: ...
  • 1 : 变量是什么? 是程序运行时临时存储数据的内存空间,程序运行结束空间释放,数据销毁 2 : 变量类型: 自定义变量 坏境变量 通过赋值语句完成变量说明并予以赋值 系统中默认存在的变量

    Linux网络管理应用 - Shell语言

    一 : 概念

    1 : Shell是命令解释程序。是用户和Linux内核之间的接口程序

    2 : shell是程序设计语言(脚本语言),可以用来编写脚本程序,功能强大

    二 :主要版本

    echo & SHELL在这里插入图片描述

    三 Shell中变量 赋值 输出变量值

    1 : 变量是什么?
    是程序运行时临时存储数据的内存空间,程序运行结束空间释放,数据销毁
    2 :
    变量类型

    自定义变量 坏境变量
    通过赋值语句完成变量说明并予以赋值 系统中默认存在的变量

    赋值:
    在给变量赋值时,若字符串中包含空格、特殊转义字符,则必须用双引号将值括起来。常见转义字符: ( ) \ ‘

    四 : Shell变量的作用域

    export内置命令将局部变量设置为全局变量

    类型 局部变量 全局变量
    范围 仅仅限制在某一个进程中 包括所有进程

    五 : 输入出重定向与管道

    重定向 :就是不使用系统的标准输入、标准输出终端,而进行重新的指定

    类型 定义
    输出重定向 命令正确的执行结果不在屏幕上显示,而是保存到某一文件的操作
    追加输出重定向 将输出的正确内容追加到文件已有内容的后面,而不会覆盖其内容(>>来实现)
    错误输出重定向 使用“2>”将命令执行的错误信息写入到指定文件,会覆盖指定文件中的内容(2>>来追加)
    输入重定向 用“<”符号来实现

    六 : 脚本的建立与执行

    1 :建立
    使用vim编辑Shell脚本文件
    在这里插入图片描述
    2 :执行 (3种方式)

    1)文件名作bash命令的参数
    [root@localhost ~]# bash hello.sh

    2)将脚本文件的访问权限改为可执行,作为可执行文件调用
    [root@localhost ~]# chmod a+x hello.sh
    [root@localhost ~]#./hello.sh 当前目录下找到并执行

    3)把脚本文件路径加到PATH环境变量中去
    [root@localhost ~]#PATH=$PATH: $PWD
    [root@localhost ~]#hello.sh 可在任何路径下执行脚本

    七 :运算符

    算术运算符 例如 : a=10; b=6

    运算符 举例
    " + " echo expr $a + $b 或者printf “expr $a + $b\n” (红色有斜撇包围)
    "- " echo expr $a - $b
    " * " v2= expr $a \* $b 用\把" * "转义为普通字符*
    " / " echo expr $a / $b
    " % " echo expr $a % $b

    关系运算符 表达式成立返回 true,否则false

    运算符 说明
    -eq equal 两个数是否相等,
    -ne 两个数是否不相等
    -gt 左边的数是否大于右边的
    -lt 左边的数是否小于右边
    -ge 左边数是否大于等于右边数
    -le 左边数是否小于等于右边数

    字符串运算符 假定变量 a = “abc”,变量 b 为=“efg”

    运算符 说明 举例
    = 检测两个字符串是否相等,相等返回 true [ $a = $b ] 返回 false
    != 检测两个字符串是否相等,不相等返回 true [ $a != $b ] 返回 true
    -z 检测字符串长度是否为0,为0返回 true [ -z $a ] 返回 fals
    -n 检测字符串长度是否不为 0,不为 0 返回 true [ -n “$a” ] 返回 true
    $ 检测字符串是否为空,不为空返回 true [ $a ] 返回 true

    文件类型测试运算符

    运算符 说明 举例
    -f file 是否普通文件,如是 [ -f $file ] 返回 true
    -d file 是否目录,如是 [ -d $file ] 返回 true
    -x file 是否有执行权限,如是 [ -x $file ] 返回 true
    -r file 检测文件是否可读,如是 [ -r $file ] 返回 true。
    -w file 检测文件是否可写,如是 [ -w $file ] 返回 true。
    -s file 检测文件大小是否大于0,如大于 [ -s $file ] 返回 true。
    -e file 检测文件是否存在,如存在 [ -e $file ] 返回 true。

    布尔测试运算符

    运算符 说明 举例
    -o 或测试 [ 10 -lt 20 -o 30 -gt 100 ] 返回true or
    -a 与测试 [ 10 -lt 20 -a 30 -gt 100 ] 返回false and
    非测试 [ ! false ] 返回 true not

    注意:条件表达式要放在方括号之间,数值和运算符、括号之间要有空格

    八 : Shell 流程选择

    1 :if选择

    在这里插入图片描述

    2 :case选择

    在这里插入图片描述

    3 :for循环

    在这里插入图片描述

    4 :while循坏

    在这里插入图片描述

    5 :until循坏

    在这里插入图片描述

    九 :Shell 参数的传递

    在这里插入图片描述

    展开全文
  • 1.4 新64位机上64位类型是什么? 3 指针声明 3 1.5 这样声明有什么问题?char *p1, p2; 我在使用p2时候报错了。 3 1.6 我想声明一个指针,并为它分配一些空间,但却不行。这样代码有什么问题?...
  • 《你必须知道495个C语言问题》

    热门讨论 2010-03-20 16:41:18
    1.10 同一个静态(static)函数或变量的所有声明都必须包含static存储类型吗? 6 1.11 extern在函数声明中是什么意思? 6 1.12 关键字auto到底有什么用途? 7 类型定义(typedef) 7 1.13 对于用户定义类型,...
  • LINGO软件学习

    2009-08-08 22:36:50
    外层主框架窗口,包含了所有菜单命令和工具条,其它所有窗口将被包含在主窗口之下。在主窗口内标题为LINGO Model – LINGO1窗口LINGO默认模型窗口,建立模型都都要在该窗口内编码实现。下面举两个例子...
  • Volatile如何保证可见性

    千次阅读 2019-07-29 15:36:04
    volatile是java虚拟机提供的轻量级的同步机制,能够保证内存共享变量的可见性。那么volatile是如何保证可见性的呢? 首先要知道内存屏障是什么内存屏障是一个CPU指令,内存屏障是这样的指令 1,确保特定操作执行...

    volatile是java虚拟机提供的轻量级的同步机制,能够保证内存共享变量的可见性。那么volatile是如何保证可见性的呢?

    首先要知道内存屏障是什么,
    内存屏障是一个CPU指令,内存屏障是这样的指令
    1,确保特定操作执行的顺序
    2,影响一些数据的可见性,编译器和CPU可以保证输出结果一样的前提下对指令进行重排序,使得性能优化,当插入一个内存屏障,相当于告诉CPU和编译器,先于这个命令的必须先执行,后于这个命令的必须后执行
    3,强制更新一次不同的CPU缓存,比如一个写屏障会把这个屏障前写入的数据刷新到缓存,任何师徒读取改数据的线程将得到最新的值

    系统提供的内存屏障:

    LoadLoad屏障
    对于Load1; LoadLoad; Load2 ,操作系统保证在Load2及后续的读操作读取之前,Load1已经读取。
    StoreStore屏障
    对于Store1; StoreStore; Store2 ,操作系统保证在Store2及后续的写操作写入之前,Store1已经写入。
    LoadStore屏障
    对于Load1; LoadStore; Store2,操作系统保证在Store2及后续写入操作执行前,Load1已经读取。
    StoreLoad屏障
    对于Store1; StoreLoad; Load2 ,操作系统保证在Load2及后续读取操作执行前,Store1已经写入,开销较大,但是同时具备其他三种屏障的效果。
    此处见原博客:内存屏障和volatile

    Volatile和内存屏障:

    volatile修饰的变量,JMM将在写操作后插入一个写屏障指令,在读操作前插入一个读屏障指令,这代表着:
    1,一旦有现成对变量写入了新值,任何访问这个变量的线程都会得到新的值
    2,在写入前,也会保证所有之前发生的事情已经发生,并且更新过的数据值也是可见的。内存屏障会把之前的写入值都刷新到缓存
    所以Volatile可以保证可见性

    展开全文
  • Python基础复习

    2019-12-30 00:07:10
    1.Python中输入和输出分别对应的函数哪个? 变量 = input(“提示信息”) ...当一个数据需要参与后期运算时,通过变量命令计算开辟一个内存空间, 将该数据暂存起来为了通过变量名字来重复使用该变量的值. 3.获取变量...
  • 27、GC是什么? 为什么要有GC?  GC是垃圾收集意思(Gabage Collection),内存处理是编程人员容易出现问题地方,忘记或者错误的内存回收会导致程序或系统不稳定甚至崩溃,Java提供GC功能可以自动监测对象...
  • 用户定义类型,对象(如变量)实例。本章介绍面向对象编程和类设计。对象声明描述的是存 储在对象中信息以及可对对象执行操作(类方法)。对象某些组成部分对于外界来说可见(公有部 分),而某些...
  • 用户定义类型,对象(如变量)实例。本章介绍面向对象编程和类设计。对象声明描述的是存 储在对象中信息以及可对对象执行操作(类方法)。对象某些组成部分对于外界来说可见(公有部 分),而某些...
  • 6.9.1 什么是变量的引用 6.9.2 引用的简单使用 6.9.3 引用作为函数参数 习题 第7章 自定义数据类型 7.1 结构体类型 7.1.1 结构体概述 7.1.2 结构体类型变量的定义方法及其初始化 7.1.3 结构体变量的引用 7.1.4 ...
  • 用户定义类型,对象(如变量)实例。本章介绍面向对象编程和类设计。对象声明描述的是存 储在对象中信息以及可对对象执行操作(类方法)。对象某些组成部分对于外界来说可见(公有部 分),而某些...
  • 用户定义类型,对象(如变量)实例。本章介绍面向对象编程和类设计。对象声明描述的是存 储在对象中信息以及可对对象执行操作(类方法)。对象某些组成部分对于外界来说可见(公有部 分),而某些...
  • 6.9.1 什么是变量的引用 6.9.2 引用的简单使用 6.9.3 引用作为函数参数 习题 第7章 自定义数据类型 7.1 结构体类型 7.1.1 结构体概述 7.1.2 结构体类型变量的定义方法及其初始化 7.1.3 结构体变量的引用 7.1.4 ...
  • 你必须知道495个C语言问题(PDF)

    热门讨论 2009-09-15 10:25:47
    1.10 对于没有初始化的变量的初始值可以作怎样的假定?如果一个全 局变量初始值为“零”, 它可否作为空指针或浮点零? . . . . . . . 4 1.11 代码int f() f char a[] = "Hello, world!";g 不能编译。. . . . . . . 5...
  • os.popen("")可以执行OS系统命令,并将 返回的输出保存为一个内存地址,通过read()读取出来 os.mkdir("")可以创建目录 .pyc文件什么的?c代表编译器的意思,实际第一次运行py文件在内存中...

空空如也

空空如也

1 2 3 4 5 ... 11
收藏数 218
精华内容 87
关键字:

内存变量的输出命令是什么