变量Shell变量主要分为三种:自定义变量、系统变量、预定义变量。自定义变量:命名规则:只能使用英文字母、数字和下划线命名,首字符不能以数字开头。中间不能有空格,可以使用下划线(_)。不能使用标点符号。bash中的关键字不能使用(使用help命令查看保留关键字)。变量名和等号之间不能有空格使用变量:your\_name\="lala"echo$your\_nameecho${your\_name}{}不能添加只读变量:usereadonly#!/bin/bashmyUrl\="http://www.google.com"readonlymyUrldeletevariableunsetvariable\_name系统变量系统变量表示默认存在,主要包括:HOME:用户主目录PATH:系统环境变量PATHTERM:当前终端UID:当前用户IDPWD:当前工作目录,绝对路径预定义变量常用于获取命令行输入,主要有:$0:脚本文件名$1-9:第1~9个命令行参数名$#:命令行号ofparameters$@:所有命令行参数$*:所有命令行参数$?:上一个命令的退出状态,可用于获取函数的返回值$$:执行进程的ID“$@”用于创建参数列表。下面的程序在使用for语句依次处理所有参数时会用到它。1#!/bin/sh23为“$@”中的项目回显$04;do5echo$item6done操作符可以通过以下4种方式调用#!/bin/bashm=1m=$\[m+1\]m=\`expr$m+1\`letm=m+1\#注意+号两边不要加空格m=$((m+1))语句if语句if[条件判断]then程序elif[条件判断公式]then程序fi例子:判断语句的3种写法1#!/bin/sh23message="Hello"45iftest"$message"="Hello";然后6echo"HelloWorld"7fi89if["$message"="Hello"];then10echo"HelloWorld"11fi1213if[[$message=="Hello"]];then14echo"HelloWorld"15fi用于字符串比较:characterstring1==string2:stringmatchesstring1!=string2:字符串不匹配-zstring:字符串为空-nstring:字符串不为空字符串==pattern:字符串匹配模式字符串!=mode:字符串不匹配模式数组比较:value1-eqvalue2:valueequal(等于)value1-nevalue2:valueunequal(不等于)value1-ltvalue2:value1小于value2(小于)value1-levalue2:value1小于等于value2(小于等于)value1-gtvalue2:value1大于value2(大于)value1-gevalue2:value1大于或等于value2(大于或等于)用于文件检查:-e文件名:文件存在-d文件名:是一个目录-h文件名:是一个符号链接-f文件名:是一个常规文件conditions逻辑运算Condition1&&Condition2:都为真Condition1||条件2:一个(或两个)为真!条件:条件不为真真:始终为假:始终为假case语句case$"value1")中的变量名执行程序1;;"value2")执行程序2;;esacforloopforvariableinvalue1value2value3...doprogramdonefor((初始值;循环控制条件;变量变化))doprogramdonewhileloopwhile[条件判断公式]doprogramdoneloop.sh1#!/bin/sh23while[[真的]];do4sleep605echo"HelloWorld"6doneselectstatement1#!/bin/sh23menu=("Apple""Grape""Orange")45PS3="你喜欢哪一个?"67在${menu[@]};do8echo"like$item"9doneFunction定义一个函数有两种方式:1.functionfun_name(){}2、fun_name(){}调用函数有3种方式#直接用函数名调用testfunctiontest#使用“函数名函数参数”传递参数test12#使用“FUN=`函数名函数参数`”间接调用FUN=`test12`echo$FUNexamplePressinput选择数据库1#!/bin/sh23servers=(4"server01.example.com"5"user01@server02.example.com"6"root@server03.example.com"7"QUIT"8)910PS3="连接到server?"1112selectserverin"${servers[@]}";do13if[[-z$server]];then14echo"Pleaseselectthenumberinthemenu"15continue16fi17if[[$server=="QUIT"]];then18echo“退出”19退出020fi21回声“连接$server”22ssh“$server”23完成
