aecho -e $echo 1echo -e $echo -e 2a 1 2 345 6 q中$ 为什么不输出
在Shell脚本中,$*用于将所有参数作为一个单词输出,参数之间使用IFS变量中的第一个字符分隔,默认为空格。而$@用于将每个参数作为一个单词输出,参数之间不进行分隔。
在上述的代码中,为了在echo命令中保留参数的空格,使用了双引号"$"和"$@"。但是在echo命令中,-e选项会将转义字符进行解析,所以在输出"$"和"$@"时,转义字符也会被解析。所以在输出时,$*和$@并没有被当作变量进行解析,而是作为普通字符串输出。
可以将代码修改为如下形式,去掉echo命令中的-e选项,这样就可以正常输出参数了:
a(){
echo "$*"
echo 1
echo "$@"
echo 2
}
a 1 2 345 6 q
输出结果为:
1 2 345 6 q
1
1 2 345 6 q
2
原文地址: http://www.cveoy.top/t/topic/iuMV 著作权归作者所有。请勿转载和采集!