变量逻辑控制shell脚本demo函数 1、变量 定义一个a1的变量,然后输入echoa指令,其中a表示可以引用这个变量 a1 echoa bhello echob chelloworld echoc 这时候会报错,因为xhello会被认为是一个变量赋值,而world会被认为是另外一个独立的命令 chelloworld echoc 需要对字符串加上单引号或者双引号。然后再打印这个变量 知识点一:单引号和双引号的区别? 01、单引号和双引号的区别在于是否支持转义,双引号可以对转义符号进行处理 02、左右不要有空格; 03、如果内容有空格,需要使用单引号或双引号; 04、双引号支持转义符,开头的变量会被自动替换; 知识点二:几个预定义变量 01、PWD表示当前目录; 02、USER表示当前用户; 03、HOME表示当前用户的主目录,HOME还可以用简写; 04、PATH表示当前所有可执行程序; 05、RANDOM可以产生一个随机数 echoPWD echoUSER echoHOME或者echo echoPATH echoRANDOM 1。2、输入x(echomrytqa)指令将字符串mrytqa存入x变量中,这时输入echox指令,你会看到()会把括号内的命令执行然后把输出结果作为值传递给变量 x(echomrytqa) echox 1。3、序列,从110获取一个序列,可以输入echo{1。。10}指令来打印110的数字 echo{1。。10}或者seq110 2、逻辑控制 知识点三、shell中的逻辑控制与python基础一致,常见包含: 01、条件判断if; 02、分支判断case、select,根据不同的条件进行不同的处理; 03、循环for、while、until; 04、break和continue,退出循环; 2。1、输入foriin(seq1310)指令,然后在do语句块中打印echoi的值,do语句块以done结束 foriin(seq1310) do echoi done 2。2、定义i0,输出结果每隔1秒打印一个i的值,而i的值逐渐增加,直到等于3时不再满足条件,退出循环 i0 while((i3));do((ii1));sleep1;echoi;done 2。3、whilereadline循环读取文件的每一行 whilereadline;doecholine;donetmpfirst。txt 2。4、或者通过管道也可以等价 cattmpfirst。txtwhilereadline;doecholine;done 3、shell脚本demo 3。1、输入vimtmpdemo。sh指令创建了demo。sh文件 vimtmpdemo。sh 3。2、demo。sh输入p00、p11p22,以及和并打印 !binsh 脚本注释:脚本demo,程序不会执行注释 echop00 echop11p22 echo echo 执行:bashtmpdemo。sh 使用bashtmp1。sh,在执行结果中0是当前的文件名,但此时参数没有值,显示 p0tmpdemo。sh p1p2 3。3、输入参数x、y传递给脚本,你可以看到输出结果中第一个参数是x,第二个参数是y,这就是参数的解析规则 bashtmpdemo。shxy 知识点四:与都表示所有的参数但它们有什么区别? 答:可以简单的理解成会把参数打散,参考以下例子 3。4、比如第二个参数是包含空格的,将mn作为一个完整的参数传递给脚本并执行,你会发现第二个参数是mn,但其实与的值已经发生了变化,会将参数打散,而则不会 bashtmpdemo。shxmn 3。5、demo。sh使用for循环来分别打印和所代表的参数 !binsh 脚本注释:脚本demo,程序不会执行注释 echop00 echop11p22 forpin;do echop done echo forpin,do echop done 执行以上脚本,如果是,第一个参数打印的是x,第二个参数打印的是mn,而把第二个参数拆成了两个 4、函数 函数是以函数名()后跟{}括起来的内容组成,函数可以实现一些功能封装,同时函数也支持与脚本类似的参数解析 4。1、定义一个hello函数,在函数中通过if语句判断第一个参数1是否等于python,如果等于就打印python测试。然后运行hello函数,你会发现什么都没有,是因为你并没有给函数传入一个参数,传入shell参数后,系统打印学习shell基础 hello(){ if〔1python〕;thenechopython测试;fi } 执行: hello hellopython 4。2、demo。sh脚本里通过elif判断1是否等于java,如果等于java就打印java测试 !binsh 脚本注释:脚本demo,程序不会执行注释 echop00 echop11p22 forpin;do echop done echo forpin;do echop done if〔1python〕;then echopython测试 elif〔1java〕;then echojava测试 fi 执行: bashtmpdemo。shpython bashtmpdemo。shjava 4。3、demo。sh封装成一个hello函数,有了函数之后就可以在执行的过程中随时进行调用来实现功能封装和逻辑复用 !binsh 脚本注释:脚本demo,程序不会执行注释 echop00 echop11p22 forpin;do echop done echo forpin;do echop done if〔1python〕;then echopython测试 elif〔1java〕;then echojava测试 fi hello(){ if〔1python〕;then echopython测试 elif〔1java〕;then echojava测试 fi } hello2运行hogwarts函数并将2参数传给它,此时2是脚本的第二个参数,但却是hogwarts函数的第一个参数 执行: bashtmpdemo。shjava bashtmpdemo。shpython bashtmpdemo。shpythonjava