shell数组
没有数据类型,只有一维数组
数组的初始化
数组名=(元素1 元素2 元素3 .。。。)
数组的调用:
${数组名【元素下标】}
–下标从0开始
数组的长度:
${#数组名【*】}
数组的全部元素访问:${数组名【@】}或者${数组名【*】}
#!/bin/bash
ARR=(hello world nihao shijie)
echo ${ARR[2]}
echo ${#ARR[@]}
echo ${ARR[*]}
练习:数组的遍历
#!/bin/bash
ARR=(hello world nihao shijie)
ARR[2]="zhangcheng"
echo ${#ARR[2]}
for((i=0;i<${#ARR[*]};i++))
do
echo ${ARR[i]}
done
shell函数
定义
function 函数名()
{
函数体
}
函数名()
{
函数体
}
函数没有数据类型,没有形参,但是可以传参,用$1
$2
…依次接受实际参数
函数里面定义的变量都是全局变量,但是需要调用函数,使该变量生效,如果要用局部变量,需要用local定义
返回值:可以有返回值,用$?
来接受返回值
$?
取值范围:0~255,超过取值范围又重新从0开始
传参方式:在函数名后面写需要传递的实际参数,实参之间需要空开
函数名 实参1 实参2
#!/bin/bash
function zc()
{
echo $1
echo $2
echo "hello world"
}
day3()
{
local a=257
echo $a
echo "nihao"
return $a
}
zc
day3
echo $?
练习:写一个交换函数
day3()
{
a=12
b=34
temp=$a
a=$b
b=$temp
echo $a
echo $b
}
day3
作业
复习前面到现在
用shell脚本打印100-1000的水仙花数
例如:
153=13+53+33
2、有一个游戏,取一个花色的所有13张扑克牌,成为一摞,按照如下的规则取牌:
(1)将最上面一张牌放到这一摞牌的最下面
(2)然后将最上面的一张牌取出
以后不断重复1,2的动作,直到所有的扑克牌取完为止。
问题:如果要使得取出扑克牌的顺序为从小到大,即顺序为:A、2、3、4、5、6、7、8、9、10、J、Q、K,请使用C/C++编程求出最初扑克牌的顺序应该是什么。