C高级day3(shell指令)

一、Xmind整理:

二、上课笔记整理:

1.定义一个变量,把第11个外部参数的值,赋值给该变量并输出,再输出外部参数的个数

var3=${11}
echo $var3
echo $#

2.定义一个变量num,使用num获取root用户,在/etc/passwd中的行号,并输出

num=`grep "^root" /etc/passwd  -n | cut  -d  ":" -f 1`
echo $num

3.定义一个数组,使用外部参数给数组赋值,通过数组求外部参数的个数

#!/bin/bash
arr=($*)    #把所有的外部参数赋值给数组arr
echo ${#arr[*]}

4.把家目录的下的所有文件名放到数组中,并记录家目录下文件的个数

arr2=(`ls ~`)   #把家目录的所有文件名赋值给数组arr1
echo ${#arr2[*]}
echo ${arr2[@]}

5.尝试把read除了-a以外的参数结合起来使用

#!/bin/bash
#read -p "请输入一个变量"  var
#read -n 3 var
#read -t 3 var
#read -a arr
read -sp "请输入一个变量" -n 3 -t 4 var
#echo ${#arr[*]}
echo $var

6.终端输入两个三位数,将其中一个自增,把两个变量赋值给第二个变量相加并输出

#!/bin/bash
read -p "请输入两个变量" var1 var2   #如果同一行获取两个变量,变量中间放空格
((var1++))   #自增
((var2=var1+var2))
echo $var1
echo $var2
((var1=var1**3))     #对var1进行幂运算
echo $var1

7.求root用户的uid和ubuntu/linux用户gid相加的结果,比较这两个数的大小关系

#!/bin/bash
num1=`id -u root`
num2=`id -g`
echo $((num1+num2))
#比较num1和num2的大小关系
echo $((num1

8.计算当前目录下文件个数和家目录下文件个数的总和

#!/bin/bash
arr=(`ls`)
arr1=(`ls ~`)
brr=(`ls` `ls ~`)  #把两个路径下的文件,放到同一个数组中 
crr=(${arr[*]} ${arr1[*]})   #先把两个路径下的文件分别存在不同数组中,再拼接两个数组
num1=${#arr[*]}
num2=${#arr1[*]}
echo $[num1+num2]
echo ${#brr[*]}
echo ${#crr[*]}

9.计算家目录下.c和.sh文件的和

arr3=(`ls ~/*.c`)
arr4=(`ls ~/*.sh`)
#对前两行的数组计数
num3=${#arr3[*]}
num4=${#arr4[*]}
echo $[num3+num4]

10.终端读入两个数据,使用expr比较大小关系

#!/bin/bash
read -p "请输入两个变量" var1 var2
expr $var1 \>= $var2

11.计算/etc/group中,第20行组用户gid和第10行组用户gid的和

#获取/etc/group中第20行用户的gid
num1=`head -20 /etc/group | tail -1 | cut -d : -f 3`
#获取/etc/group中第10行用户的gid
num2=$(head -10 /etc/group | tail -1 | cut -d : -f 3)
expr $num1 + $num2

12.终端输入网址,如:www.hqyj.com,要求:

     接触网址每个部分,并放入数组中,不能使用cut,使用expr解决

#!/bin/bash
read -p "请输入一个网址" net
len=`expr length $net`    #网址的长度
#找第一个.的位置
pos1=`expr index $net .`
#截取第一个.前面的所有子串
arr[0]=`expr substr $net 1 $((pos1-1))`

#为了找第二个.需要把后面的所有子串都截取出来
str2=`expr substr $net $((pos1+1))  $len`

#找到第二个.的位置
pos2=`expr index $str2 .`
arr[1]=`expr substr $str2 1 $((pos2-1))`

arr[2]=`expr substr $str2 $((pos2+1)) $len`
echo ${arr[*]}

你可能感兴趣的:(linux,运维,服务器,C高级)