Linux--shell脚本详解

目录

一、shell脚本的类型

二、read命令

三、数组

3.1 定义数组

3.2 赋值数组元素

3.3 取得元素个数

3.4 取得单个元素长度

3.5 取消或删除数组中的元素

四、赋值时使用引号的作用

五、位置参数

5.1 $* 和 $@的区别

六、预定义变量

七、变量的算术运算

 7.1  双小括号 (())  数值运算命令的用法

 7.2 let 运算命令的用法

 7.3 expr 命令的用法

7.3.1 expr配合变量计算

 7.3.2 利用 expr 计算字符串的长度

八、条件测试

8.1 条件测试语句

8.2 文件测试操作符

8.3 字符串测试操作符

8.4 测试表达式 test 、[] 、[[]] 、 (()) 的区别

 九、if 条件判断语句

9.1 单条件语句

9.2 多条件语句

十、case条件判断语句

十一、for循环语句

11.1 例子:计算指定数值之内的和

11.2 例子:区别$*和$@

 十二、while循环语句

 十三、shell函数

13.1 语法格式


一、shell脚本的类型

常见的shell分为两大主流:

sh 和 csh

查看系统默认的shell:echo $SHELL

查看系统支持的shell: cat  /etc/shells

二、read命令

read -p(提示语句) -n(字符个数) -t(等待时间,单位为秒) -s(隐藏输入)  

例子:

read -t 30 -p please input your name: NAME

echo $NAME

三、数组

bash只支持一维数组,不支持多维数组

3.1 定义数组

array_name = (li wang xiang zhang)         # (小括号做边界、使用空格分离)

3.2 赋值数组元素

array_name[0]=“zhao”

3.3 取得元素个数

${#array_name[@]} 或者 ${#array_name[*]}

3.4 取得单个元素长度

${#array_name[1]}

3.5 取消或删除数组中的元素

unset array_name[4]

四、赋值时使用引号的作用

  • 双引号:允许通过$符号引用其他变量值
  • 单引号:禁止引用其他变量值,$视为普通字符
  • 反撇号:命令替换,提取命令执行后的输出结果 全局变量的定义方法 export 变量名

五、位置参数

位置参数是一种在调用 Shell 程序的命令行中按照各自的位置决定的变量,是在程序名之后输入的参数。位置参数之间用空格分隔,Shell取第一个位置参数替换程序文件中的 $1,第二个替换 $2 , 依次类推。

$0 是一个特殊变量,它的内容是当前这个shell程序的文件名,所以 $0 不是一个位置参数。

$nn为数字,$0代表命令本身,$1-$9代表第一到第9个参数,十以上的参数需要用大括号包含,如${10}

$*代表命令行中所有的参数,把所有的参数看成一个整体。以"$1 $2 … $n"的形式输出所有参数

$@: 代表命令行中的所有参数,把每个参数区分对待。以"$1" "$2" … "$n" 的形式输出所有参数

$#: 代表命令行中所有参数的个数。添加到shell的参数个数

5.1 $* 和 $@的区别

  • 1$* 和 $@ 都表示传递给函数或脚本的所有参数,不被双引号" "包含时,都以"$1" "$2" … "$n" 的形式输出所有参数;
  • 2,当它们被双引号" "包含时,"$*" 会将所有的参数作为一个整体,以"$1 $2 … $n"的形式输出所有参数;
  • 3"$@" 会将各个参数分开,以"$1" "$2" … "$n" 的形式输出所有参数。
  • 六、预定义变量

  • 预定义变量和环境变量相类似,也是在Shell一开始就定义的变量,不同的是,用户只能根据shell的定义来使用这些变量,所有预定义变量都是由符号“$”和另一个符号组成。 常见的Shell预定义变量有以下几种.
  • $? : 命令执行后返回的状态,0 表示没有错误,非0表示有错误。
  • $$ : 当前进程的进程号
  • $! : 后台运行的最后一个进程号
  • $0 : 当前执行的进程名

七、变量的算术运算

Shell中常见的算术运算符

Shell 中常见的算术运算命令

 7.1  双小括号 (())  数值运算命令的用法

 7.2 let 运算命令的用法

 let 赋值表达式  

 7.3 expr 命令的用法

expr 表达式     # 运算符号和数字之间要有空格

7.3.1 expr配合变量计算

expr在Shell中可配合变量进行计算,但需要用反引号将计算表达式括起来。

 7.3.2 利用 expr 计算字符串的长度

八、条件测试

8.1 条件测试语句

8.2 文件测试操作符

 注:(())不能用于文件测试,文件测试一般常用的是 [ ]

8.3 字符串测试操作符

 注: == !=  两端要有空格  ,(())不能用于字符测试

8.4 测试表达式 test 、[] 、[[]] 、 (()) 的区别

 九、if 条件判断语句

9.1 单条件语句

if 条件判断
then
    命令
fi

例子:

 

9.2 多条件语句

if 条件判断
then
    命令
elif 条件判断
then
    命令
fi

例子:

十、case条件判断语句

case 变量 in
    one)
        命令
;;
    two)
        命令
;;
    *)
        命令
esac

 例子:

效果展示:

十一、for循环语句

for 条件
do   
    命令
done

11.1 例子:计算指定数值之内的和

效果展示:

11.2 例子:区别$*和$@

效果展示:

 十二、while循环语句

while 条件
do
    命令
done

例子:

效果展示:

 十三、shell函数

13.1 语法格式

function name(){
    statements
    [return values]
 }

对各个部分的说明:

  • function是 Shell 中的关键字,专门用来定义函数;
  • name是函数名;
  • statements是函数要执行的代码,也就是一组语句;
  • return value表示函数的返回值,其中 return 是 Shell 关键字,
  • 专门用在函数中返回一个值;这一部分可以写也可以不写。

如果你嫌麻烦,函数定义时也可以不写 function 关键字

如果写了 function 关键字,也可以省略函数名后面的小括号

例子:

效果展示:

 

 

 

 

 

 

 

 

 

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值