Shell脚本入门(一)

目录

        一、Shell概述

        1.1 概述

        1.2 查看本机的shell信息

        1.3 Shell脚本规范

         1.4 脚本错误纠察

        二、shell中重定向与管道符

        2.1 重定向

        2.2 管道符

        三、变量与赋值

        3.1 变量

        3.2 赋值


        一、Shell概述

        1.1 概述

        在Linux中shell是一个特殊的应用程序,相当于windows中的dos,Shell 脚本(shell script),是一种为 shell 编写的脚本程序。业界所说的 shell 通常都是指 shell 脚本。

        1.2 查看本机的shell信息

[root@localhost data]# cat /etc/shells   ##查看当前系统支持的shell
/bin/sh
/bin/bash
/sbin/nologin
/usr/bin/sh
/usr/bin/bash
/usr/sbin/nologin
/bin/tcsh
/bin/csh
[root@localhost data]# 
bash基于gun的框架下发展的shell
csh类似c语言的shell
tcsh整合了csh提供了更多功能
sh已经被bash替换
nologin这个shell可以让用户无法登录

        1.3 Shell脚本规范

        脚本申明(解释器):第一行开头“#!/bin/bash”,表示此行以下的代码语句是通过/bin/bash程序来解释执行。#!/bin/bash为默认的解释器还有其他类型的解释器,#!/bin/python #!/bin/expect

        注释信息:以#开头的语句表示为注释信息

        可执行语句:比如echo命令用于输出“ ”之间的字符串

[root@localhost data]# vim first.sh    ##以.sh结尾

#!/bin/bash
echo "hello shell!"      ##输出一段文字

         1.4 脚本错误纠察

  1. 语法错误,会导致后续的命令不继续执行,可以用bash -n 检查错误,提示的出错行数不一定是准确的

  2. 命令错误,默认后续的命令还会继续执行,用bash -n 无法检查出来 ,可以使用 bash -x 进行观察

  3. 逻辑错误:只能使用 bash -x 进行

bash -n +脚本名 (若不在当前目录下加绝对路径) 检查语法是否错误

bash -x  +脚本名 (若不在当前目录下加绝对路径)检查逻辑是否错误

        二、shell中重定向与管道符

        2.1 重定向

类型操作符用途
重定向输入<从指定的文件读取数据,而不是键盘输入
重定向输出1>将输出结果保存到指定的文件(覆盖原有内容)
>>将输出结果追加到指定的文件尾部
标准错误输出2>将错误信息保存到指定的文件(覆盖原有内容)
2>>
混合输出&>将错误信息追加到指定的文件中将标准输出、标准错误的内容保存到同一个文件中
案例一:
[root@localhost data]# ls >/dev/pts/1     ##查看/dev下的所有,并显示在另一个终端上
[root@localhost ~]# 99.bak  first.sh  name.bak  while1.bak  while2.bak  while3.bak  while.bak


[root@localhost pts]# xxx >/dev/pts/1   ##当错误的重定向则会不显示
bash: xxx: 未找到命令...

案例二:
[root@localhost pts]# xxx 2>/dev/pts/1  ##如果是2>,即使是错误的也会显示
[root@localhost ~]# bash: xxx: 未找到命令...

案例三:
[root@localhost data]# touch passwd.txt     ##创建一个文本文件
[root@localhost data]# echo "123" >> passwd.txt     ##将内容追加进文本文件
[root@localhost data]# cat passwd.txt 
123
[root@localhost data]# 

        2.2 管道符

        管道符 :|     

        将左侧的命令输出结果,作为右侧命令的输入(处理对象)可以 叠加使用

[root@localhost data]# echo "123123" |passwd --stdin liu
更改用户 liu 的密码 。
passwd:所有的身份验证令牌已经成功更新。
[root@localhost data]# 

        三、变量与赋值

        3.1 变量

        常见的变量包括:

        自定义变量:由用户自己定义,修改和使用
        环境变量:由系统维护,用于设置工作环境
        只读变量:只可以读取不可以更改
        位置变量:通过命令行给脚本传递参数
        预定义变量:Bash中内置的一类变量,不能修改

        系统类置变量:PATH,UID,HOSTNAME.

        $*:表示所有位置参数的内容看成一个整体返回

        $@:表示所有位置参数的内容分割成n份,每份作为一个独立的个体返回

        $?:表示前一条命令执行后的返回状态,返回值为 0 表示执行正确,返回任何非 0 值均表示执行出现异常

        $#:表示命令行中位置参数的个数

        $0:表示当前执行的脚本或程序的名称

        3.2 赋值

        1. 赋值时使用双引号("")可以直接调用变量

        2. 赋值时使用单引号('')$只会被认为是字符$ 不会调用变量

        3. 赋值时使用(``反撇在tab上面)命令替换,提取命令执行后的输出结 果$() 用法相同

        4. {}可以分隔变量值

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值