Shell脚本入门(一)基础语法

目录

1、Shell解析器

2、变量

3、运算符

4、条件判断

5、流程控制

6、read函数


1、Shell解析器

默认在CentOS使用的是bash

2、变量

2.1 系统变量

$USER、$SHELL、$HOME、$PWD

2.2 自定义变量

①定义变量:

  变量=值  注意:等号两边不能有空格。

②撤销变量

unset 变量

③声明静态变量:

readonly 变量=值   注意:常量使用unset无法撤销

④将变量提升为全局变量

export 变量

可以看到在之前定义的变量C是没有被输出,它是局部变量。使用export将它变为全局变量。

变量定义规则:①等号两边不能有空格 

                        ②变量可以以数字、字母、下划线组成,不能以数字开头,建议环境变量名使用全大写 

                       ③bash中,变量默认类型是字符串,无法直接进行数值运算

                      ④变量的值如果有空格,使用单引号或者双引号括起来。

2.3 特殊变量

① $n :$n中n代表数字, $0代表脚本文件名称,$1~$9代表第一到第九个参数, 十以上的参数使用${10}。

② $# : 用于获取所有输入参数的个数,常用于循环中。

$* 与 $@

           $* 代表命令行中所有的参数,$*把所有的参数看成一个整体。

           $@ 代表命令行中所有的参数,$*把每个参数区别对待。

$? : 返回上次执行命令的状态,0代表执行成功,非0则代表失败。

vim parameter.sh

Shell脚本入门(一)基础语法_第1张图片Shell脚本入门(一)基础语法_第2张图片

echo $?, 返回0,这说明最后一次执行的命令成功了。

3、运算符

基本语法:$[运算式] 或者 $((运算式))

                 或者  expr  +  -  \*  /  %等操作  注意:expr 运算符间要有空格

4、条件判断

语法:[ condition ]    注意:condition前后要有空格

条件非空即为true, [ liuzhoujian ]  为true, [] 为false

常用判断条件:

(1)两个整数之间比较
    = 字符串比较
    -lt 小于(less than)			-le 小于等于(less equal)
    -eq 等于(equal)				-gt 大于(greater than)
    -ge 大于等于(greater equal)	   -ne 不等于(Not equal)
(2)按照文件权限进行判断
    -r 有读的权限(read)			
    -w 有写的权限(write)
    -x 有执行的权限(execute)
(3)按照文件类型进行判断
    -f 文件存在并且是一个常规的文件(file)
    -e 文件存在(existence)		
    -d 文件存在并是一个目录(directory)

练习:1、判断100 是否大于99

练习2:判断一个文件是否具有可执行权限

多条件判断

&&表示上一条命令执行成功才执行下一条命令,|| 表示上一条命令执行失败才执行下一条命令。

5、流程控制

5.1 if判断

基本语法:

if [ 条件判断式 ];then
    程序
fi

或者

if [ 条件判断式 ]
 then
    程序
fi

注意事项:① if后要有空格  ②[ 条件判断式 ] 条件判断式前后要有空格

练习:判断输入的数字是否大于10

Shell脚本入门(一)基础语法_第3张图片

5.2 case语句

1.基本语法
case $变量名 in 
  "值1") 
    如果变量的值等于值1,则执行程序1 
    ;; 
  "值2") 
    如果变量的值等于值2,则执行程序2 
    ;; 
  …省略其他分支… 
  *) 
    如果变量的值都不是以上的值,则执行此程序 
    ;; 
esac
注意事项:
1)	case行尾必须为单词“in”,每一个模式匹配必须以右括号“)”结束。
2)	双分号“;;”表示命令序列结束,相当于java中的break。
3)	最后的“*)”表示默认模式,相当于java中的default。

练习:输入一个数字,如果是1,输出“该数字是1”, 如果是2,输出“2数字是2”,如果输入的是其他数字,则默认输出“其他”。

Shell脚本入门(一)基础语法_第4张图片

Shell脚本入门(一)基础语法_第5张图片

5.3 for循环

基本语法:

for (( 初始值;循环控制条件;变量变化 )) 
  do 
    程序 
  done


或者
for 变量 in 值1,值2,值3...
    do
       程序
    done 

练习1:从1加到100,输入结果

Shell脚本入门(一)基础语法_第6张图片

练习2:输出所有参数

 

$*与$@的区别:

当$*与$@没加双引号括起来的时候,都以$1,$2...$n的形式输出所有参数

当加上双引号时,$*将所有参数看为一个整体,以“$1 $2 $3...”输出,而$@则将各个参数分开,以"$1", "$2"..的形式输出。

Shell脚本入门(一)基础语法_第7张图片

Shell脚本入门(一)基础语法_第8张图片

5.4 while循环

基本语法:

while [ 条件判断式 ] 
  do 
    程序
  done

练习:从1加到100,输出结果

Shell脚本入门(一)基础语法_第9张图片

6、read函数

read(选项)(参数)
选项:
 -p  指定读取值时的提示语句
 -t  指定读取值时的时间限制(秒)

参数:
    接受输入的参数的变量名称

练习:输入用户名,限时5s

 

你可能感兴趣的:(shell)