是否可以使用“${pattern:?word}”格式修改参数扩展触发的错误消息?

是否可以使用“${pattern:?word}”格式修改参数扩展触发的错误消息?

假设我有以下脚本test.sh

#! /bin/sh -
printf '%s\n' "${1:?empty or missing argument}"

当不带任何命令行参数运行时,其行为如下:

$ ./test.sh
./test.sh: 2: ./test.sh: 1: empty or missing argument

问题:是否可以更改“./test.sh:2:”错误消息的一部分?

答案1

你的问题的答案是“不”;使用该语法应输出您所描述的脚本、行号和引用标准错误的变量。如果您想改变这一点,请将标准错误通过管道传输到一个进程中,以在脚本中将其转换为您想要的格式,该脚本本身运行输出错误消息的脚本。

相关内容