# $*代表所有的参数作为单个字符串
# $@代表所有的参数作为独立的字符串
# 在 Bash 中没有双引号时, 它们两个被扩展后, 结果是一样的, 都是表示外部输入的参数列表
# 当有双引号时, 如 “$*”, “$@”, 这个时候, 前者表示的是用 IFS (Internal Field Separator)
# 分隔符连接起来的统一字符, 后者则表示的是输入的每个参数.
直接上代码
#!/bin/bash
# 将用户的输入的参数打印出来
# @凉泉
# 2023-11-26
# $*代表所有的参数作为单个字符串
# $@代表所有的参数作为独立的字符串
# 在 Bash 中没有双引号时, 它们两个被扩展后, 结果是一样的, 都是表示外部输入的参数列表
# 当有双引号时, 如 “$*”, “$@”, 这个时候, 前者表示的是用 IFS (Internal Field Separator)
# 分隔符连接起来的统一字符, 后者则表示的是输入的每个参数.
echo "\"\$*\""
for filename in "$*"
do
echo $filename
done
echo "\"\$@\""
for filename in "$@"
do
echo $filename
done
echo "\$*"
for filename in $*
do
echo $filename
done
echo "\$@"
for filename in $@
do
echo $filename
done
运行结果
root@user:/home/user/shell# ./13_02_for.sh 1 2 3 4 5 6
"$*"
1 2 3 4 5 6
"$@"
1
2
3
4
5
6
$*
1
2
3
4
5
6
$@
1
2
3
4
5
6
root@user:/home/user/shell#