命令保持回声的回声结果

use*_*271 2 bash

我有一个代码

#!/bin/bash
case "$*" in
  "info" ) echo "INFO * * *";;
  "copy" ) echo `$0 info`;;
esac
Run Code Online (Sandbox Code Playgroud)

打印这个

$ ./print.sh info
INFO * * *
$ ./print.sh copy
INFO print.sh print.sh print.sh
Run Code Online (Sandbox Code Playgroud)

如何进行打印

$ ./print.sh info
INFO * * *
$ ./print.sh copy
INFO * * *
Run Code Online (Sandbox Code Playgroud)

保留echo在复制案例中:

  "copy" ) echo ???;;
Run Code Online (Sandbox Code Playgroud)

Joh*_*ica 5

引用反引号,以便替换的星号随后不被解释为globs并扩展.$0也应引用安全措施.

"copy" ) echo "`"$0" info`";;
Run Code Online (Sandbox Code Playgroud)

最好还是$(...)代替`...`这些日子.而且无需引用"信息"或"复制".

copy) echo "$("$0" info)";;
Run Code Online (Sandbox Code Playgroud)

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

copy) "$0" info;;
Run Code Online (Sandbox Code Playgroud)