在Linux上写shell脚本的一个很重要的意图是自动化。假如我们希望自动生成一个具有特定内容的文本文件,应该怎么实现呢?

我用过两个方法,下面分别举例说明。为了更通用,这两个例子中的文本内容都是多行的。

使用echo命令

echo "Hello, World!

My name is Shengbin." > readme.txt

这种方法其实就是把echo的输出重定向到了文件。echo会原样保留换行符,所以多行也是支持的。

使用cat命令

cat > readme.txt << END_TEXT

Hello, World!

My name is Shengbin.

END_TEXT

上面的END_TEXT是一个自定义的标识符,二者之间的文本将被认为是一个文件的内容,这个文件作为cat > readme.txt的输入参数。 这是一种被称为here document的技术。

这种方法有一点优势就是在脚本里写的文本内容的格式与想要呈现在文本文件中的一模一样。上一种方法则要求内容的第一行必须在echo的同一行。

区分单引号与双引号

Shell中双引号之间的内容会被进行变量展开和命令执行,如果想原样保留文本字符串,应该使用单引号(这种单双引号的区分在别的语言里也有,如PHP、Perl之类的脚本语言)。

例如:

echo "Your working directory can be read from the variable $PWD." >> readme.txt

cat > readme.txt << END_TEXT

Your working directory can be read from the variable $PWD.

END_TEXT

产生的readme.txt内容都是类似这样的:

Your working directory can be read from the variable /Users/shengbin/Desktop.

但实际希望的内容是:

Your working directory can be read from the variable $PWD.

所以正确的脚本应该这么写:

echo 'Your working directory can be read from the variable $PWD.' >> readme.txt

cat > readme.txt << 'END_TEXT'

Your working directory can be read from the variable $PWD.

END_TEXT

没错,把起始标识符用单引号包起来,就会使其中的文本被认为是在单引号之间。

怎么导出linux的脚本文件夹,用shell脚本生成文本文件相关推荐

  1. Linux下各文件夹的结构说明及用途介绍(转载)

    linux下各文件夹的结构说明及用途介绍: /bin:二进制可执行命令. /dev:设备特殊文件. /etc:系统管理和配置文件. /etc/rc.d:启动的配 置文件和脚本. /home:用户主目录 ...

  2. linux mount挂载命令(将分区挂接到Linux的一个文件夹下,从而将分区和该目录联系起来)

    看海康摄像头启动脚本有一些mount命令,不知道干啥用的... mount是Linux下的一个命令,它可以将分区挂接到Linux的一个文件夹下,从而将分区和该目录联系起来,因此我们只要访问这个文件夹, ...

  3. linux替换某个文件夹下所有文件,Linux 批量查找并替换文件夹下所有文件的内容...

    1.批量查找某个目下文件的包含的内容 cd etc grep -rn "查找的内容" ./ 2.批量替换某个目下所有包含的文件的内容 cd etc sed -i "s/查 ...

  4. linux 删除tmp文件夹,Linux下tmp文件夹的文件自动删除的问题(转)

    场景: 近日发现有一台机器tmp文件夹下放置的文件无辜丢失,而且排查发现是自动丢失,并且,只是删除10天之前的文件. 本来以为是哪位写了一个自动执行脚本, find了一下10天前的文件删除了. 结果, ...

  5. Linux 下各文件夹的结构说明及用途介绍

    点击上方公众号,可快速关注) 来源:小宁哥 www.cnblogs.com/xningge/p/8331631.html linux下各文件夹的结构说明及用途介绍: /bin:二进制可执行命令. /d ...

  6. ftp服务器文件在哪,linux ftp服务器文件夹在哪

    linux ftp服务器文件夹在哪 内容精选 换一换 已获取到Android SDK镜像包,并通过MobaXterm工具上传到服务器上的/home目录下.获取方法请参见获取软件包.添加完成后如下图所示 ...

  7. Linux 下各文件夹的结构说明及用途介绍,看完这篇就秒入门了

    linux下各文件夹的结构说明及用途介绍: /bin:二进制可执行命令. /dev:设备特殊文件. /etc:系统管理和配置文件. /etc/rc.d:启动的配 置文件和脚本. /home:用户主目录 ...

  8. linux怎么授权目录,详解Linux如何将一个文件夹的所有内容授权给某一个用户?...

    详解Linux如何将一个文件夹的所有内容授权给某一个用户? 发布时间:2020-09-14 15:23:51 来源:脚本之家 阅读:138 作者:冰阔落 栏目:服务器 [问题分析] 我们可以使用cho ...

  9. linux给文件夹下所有文件授权,Linux 如何将一个文件夹的所有内容授权给某一个用户...

    我们可以使用chown命令,ch这里代表change(改变)的意思,own代表英文单词的owner(拥有者),连在一起就是 change owner ,改变某个文件或者文件夹的拥有者. 一般只有roo ...

最新文章

  1. 【数据结构】邻接矩阵及其实现
  2. springmvc json 406
  3. iOS下的 Fixed BUG
  4. Java_异常_03_ java.lang.NoClassDefFoundError: org/apache/commons/pool/KeyedObjectPoolFactory
  5. Valgrind简单用法
  6. WPF 实现任务栏角徽
  7. c++ regex用法实例 2
  8. ami编码设计流程图_专用设备转向系统电控单元设计
  9. Objective-C:代理
  10. 字节软件测试岗二面:APP测试问题被虐哭了,直到看到这些知识点
  11. Android JNI(实现自己的JNI_OnLoad函数)
  12. 微信小程序接入海康威视萤石云直播
  13. 人脸识别门禁系统需求分析文档
  14. 这里Microsoft Office Professional Plus 2010在安装过程中出错。 错误25004。记录一下解决办法。
  15. Character.digit()详解
  16. vim leader的使用
  17. html5黄油,天才黄油有油无油区别 天才黄油的正确用法
  18. 数值重映射方法(Remap)
  19. 星际争霸Ⅱ 神族操作记录
  20. 重磅!75岁柳传志正式退休!卸任联想控股董事长,接班人是谁?一文回顾:柳传志的创业史...

热门文章

  1. VScode运行C语言代码的方法
  2. FPS之游戏基址(二)
  3. 移植UPnP CyberLink库到WinCE的问题与解决方法
  4. 索尼Xperia 1 IV国行多少钱 索尼Xperia 1 IV配置如何
  5. C语言-第10章-函数
  6. 骑行适合戴什么耳机?开放双耳的骨传导耳机更安全
  7. 淘宝/天猫API:item_history_price-获取商品历史价格信息
  8. Editplus 5.2软件注册码
  9. Qt QSS基本属性设置
  10. 游龙戏凤 里我喜欢的台词~