bash - 命令的回显结果保留回显

标签 bash

我有一个代码

#!/bin/bash
case "$*" in
  "info" ) echo "INFO * * *";;
  "copy" ) echo `$0 info`;;
esac

打印这个

$ ./print.sh info
INFO * * *
$ ./print.sh copy
INFO print.sh print.sh print.sh

如何打印

$ ./print.sh info
INFO * * *
$ ./print.sh copy
INFO * * *

在复制情况下保留echo:

  "copy" ) echo ???;;

最佳答案

引用反引号,以便替换的星号随后不会被解释为通配符并展开。为了安全起见,还应该引用 $0

"copy" ) echo "`"$0" info`";;

此外,现在最好使用 $(...) 代替 `...`。并且无需引用“信息”或“复制”。

copy) echo "$("$0" info)";;

请注意,echo "$(cmd)" 是多余的。您可以直接调用命令并跳过 $(...)echo

copy) "$0" info;;

关于bash - 命令的回显结果保留回显,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52387223/

相关文章:

linux - 取消设置 IFS - 意外行为

bashrc 如果 : Expression Syntax error

bash - 如何使用 bash 脚本递归地从文件中删除特定扩展名

javascript - 编写一个脚本来输出修改后的javascript

Linux ssh bash fork 重试 : no child processes

linux - Awk - 从评论中拆分 html 文件

python - Emacs启动py-shell时如何加载shell环境变量?

bash - 激活 virtualenv 的问题

html - 如何在 2 个 html 标签之间复制文本?

Bash 从变量中获取最后一行