加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

bash脚本中$@和$*的区别

发布时间:2020-12-15 21:54:34 所属栏目:安全 来源:网络整理
导读:参见英文答案 Parsing/passing command line arguments to a bash script – what is the difference between “$@” and “$*”?????????????????????????????????????3个 我是bash的新手,我正在学习它,我怀疑使用$@和S *之间的真正区别. 我在这里红了Bash
参见英文答案 > Parsing/passing command line arguments to a bash script – what is the difference between “$@” and “$*”?????????????????????????????????????3个
我是bash的新手,我正在学习它,我怀疑使用$@和S *之间的真正区别.

我在这里红了Bash Special Parameters

我知道两者都扩展到位置参数,但差异发生在双引号内.
顺便说一句,“$@”=“$1”“$2”…“$n”可能与“S *”=“$1 $2 … $n”不同.

我尝试用一??个简单的脚本来理解它:

if [ $# -gt 0 ]; then
       echo "Your command line contains $# arguments" 
else
       echo "Your command line contains no arguments"
       exit  fi

echo "Params are: "
echo $@  
echo $* 
echo "$@"    
echo "$*"

如果我在终端中执行我的脚本~~ / my_script par1 par2 par3

结果总是一样的:

Params are:
par1 par2 par3
par1 par2 par3
par1 par2 par3
par1 par2 par3

也许我不明白这两个特殊变量的实际用途以及我的例子是否正确.我想用一个很好的例子来弄清楚这一点.

解决方法

从 http://tldp.org/LDP/abs/html/refcards.html开始:

“$*” All the positional parameters (as a single word) *

“$@” All the positional parameters (as separate strings)

此代码显示:给定一个字符串,其中的项目用空格分隔,$@将每个单词视为一个新项目,而$*将它们全部视为相同的参数.

echo "Params for: $@"
for item in "${@}"
do
        echo $item --
done

echo "Params for : $*"
for item in "${*}"
do
        echo $item --
done

测试:

$./a par1 par2 par3
Your command line contains 3 arguments
Params for: $@
par1 --
par2 --
par3 --
Params for : $*
par1 par2 par3 --

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读