shell编程

参考教程:https://www.w3cschool.cn/linux/linux-shell.html

https://www.runoob.com/linux/linux-shell.html

感觉都差不多

这里我想了一下,直接上手写代码可能效果会更好。

//插入排序
function insertSort(A) {
    var j, temp;
    var n = A.length;
    for (var i = 1; i < n; i++) {
        j = i;
        temp = A[i];
        while (j > 0 && A[j - 1] > temp) {
            A[j] = A[j - 1];
            j--;
        }
        A[j] = temp;
    } //end for
    return A
}

上面是我曾经写过的插入排序,涉及到的内容有:

  1. 函数
  2. 变量
  3. 数组
  4. 循环
  5. 条件语句
  6. 逻辑运算符
  7. 算数运算符

感觉能用shell写出来,就对shell理解差不多了。

函数

//插入排序
function insertSort(A) {
    return A
}

写出形如上面的shell代码

[root@localhost ~]# cd /root/new
[root@localhost new]# vim insertSort.sh

编辑insertSort.sh,按a键插入代码

#!/bin/bash
#插入排序
function insertSort(){
return $1
}

然后按

esc :wq

退出编辑并保存

赋执行权限

[root@localhost new]# chmod u+x insertSort.sh

然后执行该脚本

我们需要传入一个数组,并打印传出的数组

#!/bin/bash
#插入排序
function insertSort(){
A=$@

echo ${A[@]}
#尝试返回各参数,看是不是数组
echo  "第一个参数${A[1]}"
echo  "第二个参数${A[2]}"
echo  "第三个参数${A[3]}"
return 0
#这个return好像没有什么卵用,只能返回0-255,只能用echo返回了
}
for i in $*
do
        A[i]=$i
done
echo "参数个数为:${#A[*]}"
#输出数组个数

insertSort $A

执行脚本,效果如下

[root@localhost new]# ./insertSort.sh 1 2 3
参数个数为:3
1 2 3
第一个参数1
第二个参数2
第三个参数3
[root@localhost new]# 

这里使用 ./insertSort.sh执行脚本,后面跟着的1 2 3是三个参数

然后进入脚本内容,首先使用一个循环,将参数赋给数组A

for i in $*
do
        A[i]=$i
done

$1就是传入的第一个参数,

$2就是传入的第二个参数,

我暂时没想到如何将所有的参数直接传入数组A,只能写循环

其它参数如下

 看到接下来的一行代码

echo "参数个数为:${#A[*]}"

结果

参数个数为:3

for循环中,for i in $*和for i in $@用起来效果一样

可能在别的情况下是不一样的吧

现在能传入数组A了,然后继续修改

最后代码如下

#!/bin/bash
#插入排序
function insertSort(){
A=$@
j=0
temp=0
n=${#A[@]}
echo "数组长度:$n"
for ((i=1;i<$n;i++))
do
	j=$i
	temp=${A[$i]}
	#echo "temp:$temp"
        #echo "j:$j"
        #echo ${A[$[$j-1]]}
	while (( $j>0 && ${A[$[$j-1]]}>$temp ))
	do
		A[$j]=${A[$[$j-1]]}
		j=$[$j-1]
	done
	A[$j]=$temp
        
done
echo "排序后的数组为:${A[*]}"
#echo $n
#echo "A[O]:${A[0]}"
#echo "A[1]:${A[1]}"
#echo "A[2]:${A[2]}"
#echo "A[3]:${A[3]}"
return 0
}
k=0
for i in $*
do
	#echo "参数为$i"
        #echo "数组长度${#A[@]}"
      	A[$k]=$i
        let "k++"
done
echo "未排序的数组为:${A[*]}"
#echo "参数个数为:${#A[*]}"
#输出数组个数
insertSort $A

执行插入排序效果如下:

[root@localhost new]# ./insertSort.sh 5 4 3 2 1
未排序的数组为:5 4 3 2 1
数组长度:5
排序后的数组为:1 2 3 4 5
[root@localhost new]# 

说实话,比写C语言还麻烦。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值