直接调用和通过 shell 脚本调用时的“echo -e”

2024-01-07

我发觉到echo直接调用时的行为略有不同

root$echo "line1\nline2"

当通过脚本调用时:

#! /bin/sh

echo "line1\nline2"

[...]

第一个案例将打印:

line1\nline2

,而后者会打印

line1
line2

So echo总是假设有标志-e什么时候在脚本中使用?


你的脚本有一个 shebang 行#! /bin/sh,而您的交互式 shell 可能是 Bash。如果您想要 Bash 行为,请将脚本更改为#! /bin/bash反而。

两个程序sh and bash are 不同的贝壳。即使在系统上/bin/sh and /bin/bash是同一个程序,它的行为会有所不同,具体取决于您使用哪个命令来调用它。 (尽管echo不像以前那样-e在 Bash 中默认打开sh模式,所以你可能使用的系统sh是真的dash.)

如果您输入sh根据您的提示,您会发现echo行为方式与您的脚本中相同。但sh不是一个非常友好的交互式 shell。

如果你想编写最大程度可移植的 shell 脚本,你应该坚持使用 vanillash语法,但如果您不是为了广泛的分发而编写,则可以使用 Bash 脚本 - 只需确保告诉系统它们实际上是 Bash 脚本,方法是:bash在舍邦线。

The echo顺便说一句,command 可能是 shell 中最不一致的命令。因此,如果您追求可移植性,那么除了直接、无选项、无转义、始终换行输出之外,您最好完全避免使用它。一种非常便携的选择是printf http://linux.die.net/man/1/printf.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

直接调用和通过 shell 脚本调用时的“echo -e” 的相关文章

  • subprocess.Popen args 参数的最大长度是多少?

    我在用Popen http docs python org library subprocess html using the subprocess modulesubprocess 模块中的函数来执行命令行工具 subprocess Po
  • 如何“grep”连续流?

    可以用吗grep在连续的流中 我的意思是有点tail f
  • 如何在Windows Git shell中运行./script.sh?

    也许这很尴尬 但是当我在 Git shell 中工作时 我无法在 Windows 上运行 sh 文件 也许我必须安装一些东西 但我认为 Git 会支持 bash 命令 我知道 Windows 不使用 sh 文件 我正在执行安装步骤游戏结束
  • 如何从 C 函数创建 shell 命令

    想知道如何获取一组 C 函数并将它们转换为 shell bash 命令 假设我有一组简单的 C 函数 int fn1 some C code for function 1 int fn2 some C code for function 2
  • 如何拆分一行并重新排列其元素?

    我在一行中有一些数据 如下所示 abc edf xyz rfg yeg udh 我想呈现如下数据 abc xyz yeg edf rfg udh 以便打印备用字段并用换行符分隔 有没有这样的衬里 下列awk脚本可以做到这一点 gt echo
  • 编写脚本时,#!/usr/bin/perl 和 #!/usr/bin/env perl 有什么区别?

    显然 这同样适用于用 python bash sh 等替代 perl 昆汀下面的答案显然是正确的 所以我接受了它 但我想我实际上的意思是 两种使用 的方式的优点和缺点是什么 调用 perl python bash 作为脚本的解释器 有人提到
  • Bash 脚本 - 迭代 find 的输出

    我有一个 bash 脚本 其中需要迭代 find 命令输出的每一行 但似乎我正在迭代 find 命令中的每个单词 以空格分隔 到目前为止我的脚本看起来像这样 folders find maxdepth 1 type d for i in f
  • 列出破折号中当前定义的函数?

    我想列出当前定义的函数dash 有什么办法可以做到这一点吗 我能想到的最接近的是type它可以用来测试一个函数是否存在 但除此之外我很困惑 附 我说的是dash在这里 不是bash or zsh 看看 exec c 似乎没有 没有 表是静态
  • 如何使用AWK脚本检查表的所有列数据类型? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 在这里 我正在检查表中第一列的数据类型 但我想知道AWK中表的所有列数据类型 我尝试过 但只能获得一列数据类型 例如 Column 1
  • 如何替换“docker run”命令中的变量值

    我正在使用 bash 脚本并尝试分配指纹值 如下所示 export FINGERPRINT D0 19 C5 80 42 66 56 AC 6F docker run rm i v var run docker sock var run d
  • 如何剪切(1) 个驼峰字?

    Bash 中有没有一种简单的方法可以将驼峰式单词拆分为其组成词 例如 我想将 aCertainCamelCasedWord 拆分为 a certain Camel Cased Word 并能够选择我感兴趣的那些字段 当单词分隔符是下划线时
  • 如何将命令作为参数传递给 ssh [重复]

    这个问题在这里已经有答案了 我的需要是让这个命令起作用 sshpass p XXXX ssh oStrictHostKeyChecking no email protected cdn cgi l email protection sudo
  • 如何通过 shell 脚本确定网页是否存在?

    我正在尝试制作一个程序 可以将一系列漫画扫描转换为一个 pdf 文件 并且我不想尝试下载图片来确定我是否有正确的网址 是否有一个 shell 脚本命令可以用来检查网页是否存在 在 NIX 下 您可以使用curl发出一个简单的HEAD要求 H
  • 将“npm run start”的输出写入文件

    我想捕获的输出npm run start在一个文件中 我遇到了大量错误 我想更好地控制如何筛选输出 当我尝试时 npm run start gt log txt 我得到一个非常简短的文件 8 行 其结尾为 34m 39m 90m wdm 3
  • 给出 5 个参数,但在终端中只得到 3 个参数

    我想将一个文件传递给一个c 程序 如果我在 IDE 中执行此操作 test string string lt test txt return argc 5 但在终端上我刚刚得到argc 3 看来 这是因为 什么是 lt 意思是 我正在使用
  • xsel -o 对于 OS X 等效项

    是否有一个等效的解决方案可以在 OS X 中抓取选定的文本 就像适用于 Linux 的 xsel o 一样 只需要当前的选择 这样我就可以在 shell 脚本中使用文本 干杯 埃里克 你也许可以安装xsel在 MacOS 上 更新 根据 A
  • 仅当重复行与模式匹配时才删除它们

    这个问题 https stackoverflow com questions 1444406 how can i delete duplicate lines in a file in unix有一个很好的答案说你可以使用awk seen
  • 将文件从不同目录复制到公共目录

    我有很多目录 其中包含 c文件 我想复制全部 c使用 shell 脚本将不同目录中的文件复制到单个目录 find name c exec cp t tmp 启动当前目录中的所有项目 递归 获取名称结尾的项目 c 将这些项目复制到 tmp 如
  • 通过powershell运行ADB命令

    所以我尝试通过 powershell 脚本运行一些 ADB 命令 这是我正在尝试做的一个简单示例 adb shell echo in adb shell su root echo you are now root ls cd data da
  • 如何执行“sudo nvm”?

    在我的 Mac 上 我想将一些需要 su 权限的包迁移到另一个节点版本 我使用 homebrew 安装 nvm 现在我需要执行 sudo nvm 或 reinstall packages将失败 me MacBook sudo nvm sud

随机推荐

  • 访问 VBA 错误“此类对象不支持操作”

    我有这个 vba 代码 但我不明白为什么它返回错误me ID 存储为字符串顺便说一句 Private Sub ID AfterUpdate Dim db As DAO Database Dim rs As DAO Recordset Me
  • 从其他 Xaml 文件绑定到 Usercontrol 内的元素

    谁能告诉我如何绑定到用户控件的元素 我尝试使用数据触发器与 IDataErrorInfo 一起禁用 启用按钮 所以当元素位于同一视图上时我通常会这样做
  • 调用带注释的方法时运行另一个函数

    有没有办法创建自定义或使用现有注释来在调用带注释的方法时触发代码运行 最好 我想使用 Spring 库 例如 SendEmail templateName public void doSomething log info Something
  • 如何更改内容类型 Python

    我想将文件上传到远程设备 如果我查找与wireshark的连接 我会得到这个 POST saveRestore htm cgi HTTP 1 1 Host 10 128 115 214 User Agent Mozilla 5 0 X11
  • Elmah 没有记录 HttpRequestValidationException

    在我的 ASP NET MVC2 应用程序中 Elmah 无法记录任何HttpRequestValidationException 除非您通过远程桌面登录网络服务器并以本地主机身份浏览该网站 例如 如果我输入 39使用我获得的域名从我的电脑
  • 不包含引号但可以包含转义引号的正则表达式

    我正在寻找一个正则表达式来匹配一个字符串 该字符串可以包含除单引号之外的任何内容 但如果引号被转义 则应该匹配 本质上 我想匹配字符串 Tuco and Tuco ABC 但不是 Tuco 看起来下面的内容与引号不匹配 但无法匹配引号 什么
  • 引起原因:java.sql.SQLException:找不到jdbc的合适驱动程序:mysql://localhost:3306/domain

    你好我正在使用以下 hibernate core 4 1 2 Final jar mysql connector 5 1 6 jar 两者都可以在我的项目 lib 目录中找到 我有以下内容休眠 cg xml配置
  • Azure 持久实体,用于存储运行之间的函数应用程序状态 (.net 6)

    我想每分钟运行一个简单的 net 6 c 消耗 azure 函数应用程序 不持久 但我需要记住上次运行的状态 状态由 json 可序列化对象的数组和一些访问令牌字符串组成 所以我创建了一个像这样的持久功能实体 JsonObject Memb
  • 如何向接口添加委托 C#

    我的班上需要有一些代表 我想使用该界面来 提醒 我设置这些委托 How to 我的班级是这样的 public class ClsPictures myInterface Implementing the IProcess interface
  • 如何刷新天气层?

    有谁知道是否有办法刷新 Google 地图 javascript API 中的天气层 为了提供一些背景知识 我们有一个应用程序 它在浏览器中保持打开状态 并每隔几分钟更新地图上的一些信息 我们让用户在地图上打开天气图层 但天气仅在创建图层时
  • 如何在android中测试应用内订阅

    我已成功将应用内购买 api v3 集成到我现有的应用程序中 我还在 google play 中创建了应用程序订阅 并在代码中添加了订阅 ID 在 Google 开发者网站中 我读到要测试应用程序购买 我们需要在 设置 部分添加电子邮件 I
  • 无需连接WiFi即可获取MAC地址

    是否可以在未实际连接的情况下获取 WiFi MAC 地址 假设我有 Android 设备 A 我已经打开了 WiFi 因此我的 Android 设备现在能够检测到附近广播的 WiFi SSID 我附近有一些广播的 WiFi SSID 如下所
  • 遍历范围,将字符串附加到每个范围

    我在 Google 表格 activerange 中选择了一系列单元格 我想迭代该范围内的每个单元格 并在末尾添加一个字符串 该字符串始终相同 并且可以硬编码到函数中 这似乎是一件非常简单的事情 但我已经搞乱了代码一个小时了 但无法发生任何
  • 以有限度数旋转表盘

    All 我想要以特定角度旋转图像 如下图所示 我有旋转代码 但它旋转 360 度 但我只想要特定的度数 并获取表盘上侧的选定数字 下面是我的代码 我的自定义视图工作正常 但性能不佳 import android content Contex
  • 在更新值时扩展 numpy 数组

    我有一个具有形状的 numpy 数组 1 m 和每个条目 n 是0 9之间的整数 我想创建一个具有形状的新矩阵 m 10 其中 除了第 n 列为 1 之外 所有条目均为 0 例如 2 3 1 gt 0 0 1 0 0 0 0 1 0 1 0
  • 更改winform应用程序中所有表单的背景颜色

    我有像这样的基本表单类 它继承自类 public partial class BaseForm Form protected override void OnLoad EventArgs e Color colBackColor Prope
  • 如何在 CIL 中声明值类型:`.class value` 还是只是 `.class`?

    我看过 C struct FooStruct in ILDASM http msdn microsoft com en us library f7dy01k1 aspx 并看到以下内容 ILDASM 此处显示两个不同的声明 一个开始于 cl
  • 如何从 Router 组件以外的组件访问路由参数

    在 React router 1 0 2 0 中 可以通过以下方式访问路由参数 this props params来自 Route 组件 但似乎没有受支持的方法来从上述 Route 组件中深层包含的组件访问参数 可以通过以下方式访问数据类型
  • 在 Typescript 中重新导出类

    我在两个文件中有两个类 a ts export class A b ts export class B 我如何构建文件c ts我可以从中导入这两个类 import A B from c 代替 import A from a import B
  • 直接调用和通过 shell 脚本调用时的“echo -e”

    我发觉到echo直接调用时的行为略有不同 root echo line1 nline2 当通过脚本调用时 bin sh echo line1 nline2 第一个案例将打印 line1 nline2 而后者会打印 line1 line2 S