"a(){\n echo "$"\n echo 1\n echo "$@"\n echo "2"\n}\na 1 2 345 6 q\n\n中$ 为什么不输出内容:在Shell脚本中,$用于将所有参数作为一个单词输出,参数之间使用IFS变量中的第一个字符分隔,默认为空格。而$@用于将每个参数作为一个单词输出,参数之间不进行分隔。\n\n在上述的代码中,为了在echo命令中保留参数的空格,使用了双引号"$"和"$@"。但是在echo命令中,-e选项会将转义字符进行解析,所以在输出"$*"和"$@"时,转义字符也会被解析。所以在输出时,$*和$@并没有被当作变量进行解析,而是作为普通字符串输出。\n\n可以将代码修改为如下形式,去掉echo命令中的-e选项,这样就可以正常输出参数了:\n\nshell\na(){\n echo \"$*\"\n echo 1\n echo \"$@\"\n echo 2\n}\n\na 1 2 345 6 q\n\n\n输出结果为:\n\n\n1 2 345 6 q\n1\n1 2 345 6 q\n2\n

Shell 脚本中 $* 变量输出为空的原因及解决方案

原文地址: https://www.cveoy.top/t/topic/qckK 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录