在Bash中,"${@}"和"${}"都表示所有的命令行参数。它们之间的区别在于对待参数中包含的空格的方式。\n\n"${@}"会将每个参数视为一个独立的字符串,参数中的空格会被保留。这意味着如果一个参数包含空格,它会被视为多个参数。\n\n"${}"会将所有的参数合并为一个单独的字符串,参数之间用第一个字符在"$IFS"环境变量中定义的分隔符(默认为空格)分隔。参数中的空格会被视为分隔符,而不会保留。\n\n下面是一个示例来演示它们之间的区别:\n\nbash\n#!/bin/bash\n\n# 假设脚本名称为test.sh\n# 假设在命令行中执行脚本时,有三个参数:"hello world", "foo", "bar"\n\n# 使用${@}\necho "使用 \${@}:"\nfor arg in \"${@}\"; do\n echo "$arg"\ndone\n\n# 使用${*}\necho "使用 \${*}:"\nfor arg in \"${*}\"; do\n echo "$arg"\ndone\n\n\n上述脚本的输出将会是:\n\n\n使用 ${@}:\nhello world\nfoo\nbar\n使用 ${*}:\nhello world foo bar\n\n\n可以看到,"${@}"会将参数视为独立的字符串,而"${*}"会将所有参数合并为一个字符串,并用空格分隔。

Bash中${@}和${*}的区别:参数处理和空格处理

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

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