程序代码如下:

#!/bin/bash

# 将一个指定的输入文件内容转换为大写

E_FILE_ACCESS=70
E_WRONG_ARGS=71 if [ ! -r "$1" ] # 判断指定的输入文件是否可读
then
echo "Can't read from input file!"
echo "Usage: $0 input-file output-file"
exit $E_FILE_ACCESS
fi if [ -z "$2" ] # 确保是有效的输出文件名
then
echo "Need to specify output file."
echo "Usage: $0 input-file output-file"
exit $E_WRONG_ARGS
fi exec 4<&0 # 将文件描述符与 stdin 联系起来,保存了 stdin
exec < $1 # 将会从输入文件中读取 exec 7>&1 # 将文件描述符与 stdout 联系起来,保存了 stdout
exec > $2 # 将写到输出文件中 # -----------------------------------------------
cat - | tr a-z A-Z # 转换为大写
# 从 stdin 中读取然后写到 stdout 上,stdin 和 stdout 都被重定向了
# ----------------------------------------------- exec 1>&7 7>&- # 恢复 stdout.
exec 0<&4 4<&- # 恢复 stdin. # 恢复之后, 下边这行代码将会如期望的一样打印到 stdout 上
echo "File \"$1\" written to \"$2\" as uppercase conversion." exit 0

用 tr 命令实现了小写到大写的转换。

关闭文件描述符的方法

n<&- 关闭输入文件描述符 n.
0<&-, <&- 关闭 stdin.
n>&- 关闭输出文件描述符 n.
1>&-, >&- 关闭 stdout

Shell 示例:将指定的文件内容转换为大写的更多相关文章

  1. 示例:Servlet读取文件内容并在页面打印输出

    package com.mhb; import java.io.BufferedReader; import java.io.File; import java.io.FileReader; impo ...

  2. 将PPT文件内容转换为图片放在Email邮件正文中发送

    通过Email推送统计报告.一般除了要求将PPT报告文件作为附件发给用户,同时希望将报告内容在邮件中直观展示. 一份统计报告中经常包含柱状图.饼图.好看的图表,这些信息要直接在Email中展示比较复杂 ...

  3. Linux Shell:根据指定的文件列表 或 map配置,进行文件位置转移

    读取配置文件,进行文件位置转移 在whenb.csv中指定了需要从/home/root/cf/下移除到/home/root/cf_wh/下文件列表,whenb.csv中包含记录如下: enb- enb ...

  4. 【Shell】按行读取文件内容

    方法1:while循环中执行效率最高,最常用的方法. function while_read_LINE_bottm(){ While read LINE do echo $LINE done < ...

  5. shell ssh 远程机器 追加文件内容

    在host1上,把下面的两行内容通过ssh追加到host2上的/etc/ca-certificates.conf文件中 I am a student Are you ok ssh host2 &quo ...

  6. shell怎么判断两个文件内容是否相同

    #cat diff_two_file#/bin/sbinfile1=/mnt/mmc/test/aafile2=/mnt/mmc/test/bbdiff $file1 $file2 > /dev ...

  7. Shell——Linux/Mac 终端复制文件内容到剪切板

    pbcopy < filename 如: pbcopy < README.md 效果如下: 说明:上图中  # gitskills   即README.md 中内容.

  8. 如何将/etc/issue文件中的内容转换为大写后保存至/tmp/issue.out文件中

    cat /etc/issue|tr '[:lower:]' [:upper:] >> /tmp/issue.out

  9. iconv内容,convmv文件名,unix2dos,dos2unix文件格式转换,od/cut/wc/dd/diff/uniq/nice/du等命令,linux文件名乱码,文件名,文件内容,vim编码设置

    1.enconv文件名编码转换,比如要将一个GBK编码的文件转换成UTF-8编码,操作如下 enconv -L zh_CN -x UTF-8 filename enconv -L GB2312 -x  ...

随机推荐

  1. 虚拟机 django 端口无法连接

    我的虚拟机django服务器为192.168.27.100,使用启动命令python manage.py runserver 9001启动后,发现笔记本电脑的游览器无法连接 python@qinhan ...

  2. 秒杀系统-web

    秒杀系统Web层主要涉及前端交互设计.Restful:url满足Restful设计规范.Spring MVC.bootstrap+jquery这四个方面的开发.秒杀系统的前端交互流程设计如下图6-3所 ...

  3. PowerShell 使用.NetFramework

    我们都知道,由于PowerShell是基于.NETFramework建立的所以它能够具备访问.NET的能力,因为.NET提供了庞大的数据类库,所以我们可以很好的使用PowerShell去完成一些Pow ...

  4. JQuery对checkbox的操作

    对复选框组的全选.全不选.不全选,获取选中的复选框的值的操作 点击全选按钮,复选框组全部选中或者全部取消. 实现全选按钮和复选框组的联动,当复选框组中有一个没有被选中后,那么id=‘checkedAl ...

  5. 【jenkins 忘记密码】忘记Jenkins管理员密码的解决办法

    一.admin密码未更改情况 1.进入\Jenkins\secrets目录,打开initialAdminPassword文件,复制密码: 2.访问Jenkins页面,输入管理员admin,及刚才的密码 ...

  6. 装Office时,安装程序找不到Office.zh-cn\OfficeMUI问题

    运行Office 2007安装程序,没想到安装并不顺利,竟然在开始安装时就提示:"找不到Office.zh-cn\OfficeMUI.xml",而文件却是完整存在的,怎么回事? 原 ...

  7. 【牛客网71E】 组一组(差分约束,拆位)

    传送门 NowCoder Solution 考虑一下看到这种区间或与区间与的关系,拆一下位. 令\(s_i\)表示前缀和,则: 那么如果现在考虑到了第\(i\)为,有如下4种可能: \(opt=1\) ...

  8. 简单的基于矩阵分解的推荐算法-PMF, NMF

    介绍: 推荐系统中最为主流与经典的技术之一是协同过滤技术(Collaborative Filtering),它是基于这样的假设:用户如果在过去对某些项目产生过兴趣,那么将来他很可能依然对其保持热忱.其 ...

  9. Android OOM 引发的思考

    一.为何会出现OOM 因为Android系统的硬件资源是相当有限的,而且分配给一个应用的资源更为有限,尤其是内存.当应用突然申请的内存大于允许的最大值的时候,就会出现OOM. 如果想要获取App的内存 ...

  10. Bootstrap轮播如何支持移动端左右滑动

    一直觉得bootstrap的轮播用起来很好用,代码简单,又支持响应式,不过从来没想过,也不知道原来bootstrap的轮播竟然不支持在手机上左右滑动 解决方法就是:使用滑动手势js插件:hammer. ...