【问题标题】:Printing error message on stderr on linux在 linux 上的 stderr 上打印错误消息
【发布时间】:2015-12-12 09:32:34
【问题描述】:

所以我读过好几遍关于 stdout、stdin 和 stderr 的文章。这听起来是一个非常简单的概念,但我不知道为什么我还不能掌握它。

嗯,我正在编写作业脚本。部分原因是它至少需要两个参数。如果它少于两个参数,它应该在 stderr 上打印一个错误,否则它应该将所有文件的内容打印到 stdout。 (现在假设所有文件都是文本文件,我还不想处理)

所以在阅读了 Linux Pocket 指南后,我知道了如何开始

#!/bin/bash

if[$# -lt 2]
then
    echo $0 error: you must supply two arguments"
else
//stuff
fi

我的第一个问题是,代码行:

echo $0 error: you must supply two arguments"

这是否满足“应该在 stderr 上打印错误”的要求?

另外,作业要求我将参数命名为 a1、a2、a3……等等。如何命名参数?

最后,我怎样才能把所有东西放在一起,换句话说,我怎样才能连接文件并打印它们?

【问题讨论】:

标签: linux shell


【解决方案1】:

没有。

echo $0

表示打印文件名。您没有将输出定向到任何地方。

示例:

#!/bin/bash
echo "name stdout: $0"
echo "name stderr: $0" >&2

&1 是一个指向标准输出的指针。可以不提供,默认 &2 是指向标准错误的指针

为了证明这一点,运行此脚本并将脚本 stderr 输出重定向到 /dev/null。 如果你没有看到任何输出,那么你就知道 echo 在 stderr 中了。

$ sh test.sh
  name stdout: test.sh
  name stderr: test.sh
$ sh test.sh 2>/dev/null #2 is stderror, redirect it to /dev/null
  name stdout: test.sh
$

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多