带有以"-e"开头的字符串的Shell脚本

use*_*925 3 unix shell sh echo

#!/bin/sh
STR="-e"
echo ${STR}
STR="${STR} HI"
echo ${STR}
Run Code Online (Sandbox Code Playgroud)

上面的脚本打印出来:

 HI
Run Code Online (Sandbox Code Playgroud)

一句空白后.这是为什么,以及如何以"-e"开头的字符串?

Joh*_*ica 5

echo不是一个非常好的UNIX公民.如果它表现良好,你就可以写echo -- "$STR",并--指出选项列表的结尾.但事实并非如此,所以你做不到.

你最好的选择是使用printf.

printf '%s\n' "$STR"
Run Code Online (Sandbox Code Playgroud)