shell中的 ${x[@]} 、 ${#x[@]} 、 ${x[*]} 、 ${#x[*]}

$# :

$# : 总是表示参数的总数

$@ 和 $*一般情况下:

$@$*  :都表示传递给函数或脚本的所有参数

所以:

${x[@]}    ==  ${x[*]} 
${#x[@]}   ==  ${#x[*]}

但是当它们被双引号" "包含时,就会有区别了:

$*  : 会将所有的参数从整体上看做一份数据
$@  : 仍然将每个参数都看作一份数据,彼此之间是独立的

二、举个栗子
vim test.sh

#!/bin/bash
pids=(num1 num2 num3)

echo "\${#pids[@]}表示参数总数:   ${#pids[@]}"
echo "####################"
echo "\${#pids[*]}表示参数总数:   ${#pids[*]}"

echo "######### 一般情况 ########"
echo "\${pids[@]}输出每个参数:  ${pids[@]}"
echo "\${pids[*]}输出每个参数:  ${pids[*]}"

echo "######### 带双引号区别 ########"
for i in "${pids[*]}";do
        echo "双引号下\${pids[*]}作为一个整体输出:$i"
done
echo "####################"
for i in "${pids[@]}";do
        echo "双引号下\${pids[@]}依然输出每个参数:$i"
done

结果如下:

${#pids[@]}表示参数总数:   3
####################
${#pids[*]}表示参数总数:   3
######### 一般情况 ########
${pids[@]}输出每个参数:  num1 num2 num3
${pids[*]}输出每个参数:  num1 num2 num3
######### 带双引号区别 ########
双引号下${pids[*]}作为一个整体输出:num1 num2 num3
####################
双引号下${pids[@]}依然输出每个参数:num1
双引号下${pids[@]}依然输出每个参数:num2
双引号下${pids[@]}依然输出每个参数:num3
  • 7
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值