为了账号安全,请及时绑定邮箱和手机立即绑定

Bash中的“ $ @”和“ $ *”有什么区别?

Bash中的“ $ @”和“ $ *”有什么区别?

慕田峪4524236 2019-11-12 10:23:59
在我看来,它们都存储了所有命令行参数。两者之间有区别吗?
查看完整描述

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


查看完整回答
反对 回复 2019-11-12
?
qq_花开花谢_0

TA贡献1835条经验 获得超6个赞

我假设您说的是“原谅”但指的是双引号。“ $ *”和$ *之间的区别在于,引号将$ *的扩展名保留为单个字符串,而没有引号的情况下,会将$ *的部分视为单独的项。这是双引号的一般含义;该行为并非特定于$ *和$ @。顺便说一句,单引号和双引号之间的区别在于替换(例如$ *的扩展)在双引号中执行,但不在单引号中执行。(“ $ *”的结果只是$ *,即2个字符的字面值。)

查看完整回答
反对 回复 2019-11-12
  • 3 回答
  • 0 关注
  • 1787 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信