shell编程--输入输出

shell 简介

Shell 是一个用 C 语言编写的程序,一般我们说的shell编程,是指编写shell脚本。

Shell 负责完成用户与内核之间的交互(shell是一个命令解释器,负责将用户的命令解析成操作系
统所能理解的指令)

在这里插入图片描述

语句

  • 说明性语句:
    以#号开始到该行结束,不被解释执行

  • 功能性语句:
    任意的shell命令、用户程序或其它shell程序。

  • 结构性语句:
    条件测试语句、多路分支语句、循环语句、循环控制语句等。

第一个shell脚本

创建一个shell脚本–test.sh

#! /bin/sh
echo "hello world"

echo "hello world"很简单就是输出字符串hello world

#! /bin/bash -->告诉操作系统用哪种类型的shell来解释执行该程序

如何执行改脚本,创建test.sh是个普通文件,使用ls -l可以查看,该文件没有可执行权限,使用

chmod u+x test.sh,给脚本添加上可执行权限。

ghost-linux@ghost-linux:~/shell$ ./test.sh 
hello world

输入和输出

echo

echo string

echo 是shell中用于输出的指令

​ 如果需要转义,可以加上-e选项;用-n选项来禁止echo命令输出后换行

在这里插入图片描述

read

read语句从键盘或文件的某一行文本中读入信息,并将其赋给一个变量

read varible1 varible2 ...


  • read -a 读入一个数组
    例:
    read -a array #读入一串数字作为数组array的元素

    echo ${#array[@]} #计算这个数组中有多少个元素

    echo ${array[@]} #打印这个数组中所有的元素

    echo ${array[2]} #打印这个数组中下标为2的元素

  • read -p 在输入时打印提示语句
    例:read -p “Enter aa bb:” aa bb

管道

cmd1 | cmd2

​ 管道就是将一个命令cmd1的输出当做输入传给另一个命令cmd2

|是管道符号

​ 一般情况下,管道后面的操作都是查找grep、切割awk或替换seb

在这里插入图片描述

重定向

  • 系统已经定义的文件描述符

    • 标准输入:0
    • 标准输出:1
    • 标准错误:2
  • 重定向命令

    命令作用
    cmd > file将cmd重定向到file
    cmd >> file将cmd重定向追加到file
    m <& n将文件描述符n输入重定向到m
    m >& n将文件描述符m输出重定向到n
    cmd < file将file作为输入给cmd
    cmd << deli从标准输入中读入,直至遇到deli分界符
    cmd > file 2>&1把标准输出和标准错误一起重定向到file中

在这里插入图片描述

exec

  • exec执行shell命令

  • 操作文件描述符

    使用exec创建的文件描述符重定向,是永久有效,直到显示取消重定向,可以看下面例子

    #! /bin/bash
    
    echo "input 6<&0 name ouput to stdout"
    exec 6<&0 0<name 
    read var
    read var1
    echo $var
    echo $var1
    
    echo "close fd--6"
    exec 0<&6 6<&-
    echo -n "read from stdin:"
    read num
    echo "num = $num"
    
    echo "test over" >> name
    
    echo this is file name:
    cat name
    
    echo "redirect stdout to exec.log"
    exec  1>exec.log
    wc -l name
    
    echo "redirect stdout to stderr"
    exec 1>&2
    echo "redirect stdout to stderr over"
    wc -l name
    
    echo "ouput exec.log"
    cat exec.log
    
    

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Ghost_199503

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值