在我看来,它们都存储了所有命令行参数。两者之间有区别吗?
3 回答
海绵宝宝撒
TA贡献1809条经验 获得超8个赞
与POV的一个关键区别是"$@"保留了原始数量的参数。这是唯一的形式。
例如,如果文件my_script包含:
#!/bin/bash
main()
{
echo 'MAIN sees ' $# ' args'
}
main $*
main $@
main "$*"
main "$@"
### end ###
我这样运行它:
my_script 'a b c' d e
我将得到以下输出:
MAIN sees 5 args
MAIN sees 5 args
MAIN sees 1 args
MAIN sees 3 args
qq_花开花谢_0
TA贡献1835条经验 获得超7个赞
我假设您说的是“原谅”但指的是双引号。“ $ *”和$ *之间的区别在于,引号将$ *的扩展名保留为单个字符串,而没有引号的情况下,会将$ *的部分视为单独的项。这是双引号的一般含义;该行为并非特定于$ *和$ @。顺便说一句,单引号和双引号之间的区别在于替换(例如$ *的扩展)在双引号中执行,但不在单引号中执行。(“ $ *”的结果只是$ *,即2个字符的字面值。)
- 3 回答
- 0 关注
- 1821 浏览
添加回答
举报
0/150
提交
取消