Linux-shell

一、变量

调试下列 shell 程序,写出变量$#,$0,$1,$2,$3, $@的含义。

echo “所有参数: $@”
echo “前三个参数:$1 $2 $3”
shift
echo “程序名:$0echo “所有参数: $@”
echo “前三个参数:$1 $2 $3” 
shift 3
echo “程序名:$0echo “所有参数: $@”
echo “前三个参数:$1 $2 $3exit 0

在这里插入图片描述

$#:传给脚本的参数个数
$0:脚本名称
$1:传给脚本的第1个参数
$2: 传给脚本的第2个参数.
$3: 传给脚本的第3个参数
$@:参数列表

修改程序,程序运行时从键盘输入文件名,判断文件是否存在,如果存在,显示文件 内容

echo "input:"
read DORF
if [ -d $DORF ]
then
ls $DORF
elif [ -f $DORF ]
then
cat $DORF
else
echo "input error"
fi

在这里插入图片描述

二、菜单

调度下列程序,使用 shell 编写一个菜单,分别实现列出以下内容:(1)目录内容、(2)切换目录、(3)创建文件、(4)编辑文件、(5)删除文件的功能。在此例 中将用到循环语句 until、分支语句 case、输入输出语句 read 和 echo。

while true
do
	echo "(1)List you selected directory"
	echo "(2)Change to you selected directory" 
	echo "(3)Creat a new file"
	echo "(4)Edit you selected file"
        echo "(5)Remove you selected file" 
	echo "(6)Exit Menu"
	read input
	if test $input = 6; then
exit 0
 fi
 case $input in
  1) ls;;
  2) echo -n "Enter target directory:" 
     read dir
     cd $dir
     ;;
  3) echo -n "Enter a file name:" 
     read file
     touch $file
     ;;
  4) echo -n "Enter a file name:" 
     read file
     vi $file
     ;; 
  5) echo -n "Enter a file name:"
     read file
     rm $file
     ;;
  *) echo "Please selected 1\2\3\4\5\6 " ;; 
 esac
done

修改以上程序,用菜单形式完成算术四则混合运算。

while true
do
	echo "(1)+"
	echo "(2)-" 
	echo "(3)*"
	echo "(4)/"
	echo "(5)Exit Menu"
	read input
	if test $input = 5; then
exit 0
 fi
 case $input in
  1) total=0
     read a
     read b
     let total=`expr $a+$b` 
     echo "a+b=$total"
     ;;
  2) total=0
     read a
     read b 
     let total=`expr $a-$b`
     echo "a-b=$total"
     ;;
  3) total=0
     read a
     read b
     let total=`expr $a*$b`
     echo "a*b=$total"
     ;;
  4) total=0
     read a
     read b
     let total=`expr $a/$b`
     echo "a/b=$total"
     ;; 
  *) echo "Please selected 1\2\3\4\5\6 " ;; 
 esac
done

三、算数运算

3.1 while加法

(1) 用 while 循环求 1 到 100 的和。

total=0
num=0 
while((num<=100)); 
do
  total=`expr $total + $num` 
  ((num+=1))
done
echo "The result is $total"

3.2 for加法

1.用 for 语句完成 1+1/2+1/3+1/4+….+1/n。

read n
temp=0.000
sum=0.000
for((i=1; i<=$n; i++));do
	j=$i
	if [ $j != 0 ]
	then
		temp=`echo "scale=3;1.000/$j" | bc`
		sum=`echo "scale=3;$sum+$temp" | bc`
	fi
done
echo "sum=$sum"

2.编写一个shell脚本,包含两个数组array1和array2,分别初始化为{1,2,3,4,5}和{1,4,9,16,25}。脚本生成并显示一个数组,其中的元素是这两个数组中对应元素的和,数组中第一个元素是1+1=2,第二个元素2+4=6,依此类推。

declare -a array3=()
declare -a array1=(1 2 3 4 5)
declare -a array2=(1 4 9 16 25)
for((i=0;i<=4;i++));
do
array3[i]=$((${array1[i]}+${array2[i]}))
done
echo ${array3[*]}

3.3 整数加减乘除

用菜单形式完成算术四则混合运算。

read a
read b
let t=`expr $a+$b`
let t2=`expr $a-$b`
let t3=`expr $a*$b`
let t4=`expr $a/$b`
echo $t $t2 $t3 $t4

注意:字符串拼接or算术运算 let

3.3 浮点数加减乘除

read a
read b
total=$(printf "%0.2f" `echo "scale=2; $a+$b"|bc`)
total2=$(printf "%0.2f" `echo "scale=2; $a-$b"|bc`)
total3=$(printf "%0.2f" `echo "scale=2; $a*$b"|bc`)
total4=$(printf "%0.2f" `echo "scale=2; $a/$b"|bc`)
echo $total $total2 $total3 $total4

在这里插入图片描述

排序

编写shell脚本,完成从键盘输入三个数,脚本对这三个数进行升序排序,并打印输出。

read -ep "input:" num1
read -ep "input:" num2
read -ep "input:" num3
echo -e "$num1\n$num2\n$num3"|sort -nr

四、循环

编写一个bash脚本程序,用for循环实现将当前目录下的所有.c文件移到指定的目录下,最后在显示器上显示指定目录下的文件和目录。

echo -n "input:"
read dir
for i in `ls | grep -E "*\.c"`
do
mv $i $dir
done
ls -IS $dir

编写shell脚本,通过循环的形式在终端上打印出等腰三角形。

for ((i = 1; i < 10; i++))
do
   for ((j = 10; j > i; j--))
   do  
      echo -n " ";
   done
   for ((m = 1; m <= i; m++))
   do  
       echo -n "* "
   done
   echo ""
done

编写shell脚本,通过循环的形式在终端上打印出等腰梯形。

for ((a=1;a<=9;a++))
do 
   for ((b=9;b>=$a;b--))
    do
            echo -n " "
    done
    for ((c=1;c<=$a;c++))
    do
            echo -n "*"
    done
    for ((d=2;d<=$a;d++))
    do
            echo -n "*"
    done
    for ((e=1;e<=9;e++))
    do
            echo -n "*"
    done
echo ""
done
  • 1
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值