AI智能
改变未来

Shell命令的实例


shell是一门可以直接运行在Linux操作系统上的语言
shell中的变量只有字符串类型
shell语言可以保存在文件中

一、执行shell文件

  1. 编辑一个名叫test的shell文件
#! /bin/bash	#shell文件的固定首行a=hellob=worldecho $a $b	#echo打印变量的值:echo $变量名
  1. 执行文件时,该文件必须为可执行文件
chmod 777 test	#给test文件赋最高权限:chmod 777 文件名
  1. 执行文件
./test	#执行可执行文件:./文件名
  1. 运行结果
hello world
  1. 例子
    -创建一个名为User1的用户,然后删除该用户,也要删除该用户的家目录
#! /bin/bash	#shell文件的固定首行u=User1useradd $uecho \"Successfully created user $u!\"	#输出字符串
#! /bin/bash	#shell文件的固定首行u=User1userdel $urm -rf /home/User1echo \"Successfully deleted user $u!\"	#输出字符串

二、读取键盘输入的字符串并存入到变量中

  1. 直接读取
#读取一个变量read i	#read 变量名#读取两个变量read i n
  1. 提示读取
#读取一个变量read -p \"Please enter an integer:\" i	#-p参数可以用来输出一个提示字符串:read -p “提示字符串“ 变量名#读取两个变量read -p \"Please enter two integers:\" i1 i2

三、计算

#格式:$[$变量1运算符$变量2]$[$a+$b]$[$a-$b]$[$a*$b]$[$a/$b]$[$a%$b]#!/bin/bashread \"Please input the first number:\" num1read \"Please input the second number:\" num2echo \"The first number is $num1\"echo \"The second number is $num2\"echo $[$num1+$num2]echo $[$num1-$num2]echo $[$num1*$num2]echo $[$num1/$num2]echo $[$num1%$num2]

四、比较

  1. 数值的比较
#等于:[ $变量1 -eq $变量2 ]  或 ((变量1==变量2))#不等于:[ $变量1 -ne $变量2 ]  或 ((变量1!=变量2))#大于:[ $变量1 -gt $变量2 ]  或 ((变量1>变量2))#大于等于:[ $变量1 -ge $变量2 ]  或 ((变量1>=变量2))#小于:[ $变量1 -lt $变量2 ]  或 ((变量1<变量2))#小于等于:[ $变量1 -le $变量2 ]  或 ((变量1<=变量2))#! /bin/basha=10b=20if [ $a -eq $b ]	#或if((a==b))thenecho \"a is equal to b!\"elif [ $a -gt $b ]	#或if((a>b))thenecho \"a is bigger than b!\"elseecho \"a is less than b!\"fi
  1. 字符串比较
#if [ \"$变量1\"==\"$变量2\" ]#!/bin/bashread -p \"It is morning? Please input yes or no:\" yonif [ \"$yon\" = \"yes\" ]thenecho \"Good morning!\"elif [ \"$yon\" = \"no\" ]thenecho \"Good afternoon!\"elseecho \"Sorry, $yon is not right!\"fi

五、逻辑运算符

# &&用来连接两个比较运算,表示并且的关系# ||用来连接两个比较运算,表示或者的关系#分数分级#!/bin/ bashread -p \"Please input your score:\" sif((s>=0&&s<60))	#0-59:Ethenecho\"E\"elif ((s>=60&&s<70))	#60-69:Dthenecho \"D\"elif((s>=70&&s<80))		#70-79:Cthenecho \"C\"elif((>=80&&s<90))		#80-89:Bthenecho \"B\"elif((s>=90&&s<=100))	#90-100:Athenecho \"A\"elseecho \"Error score\"		#其他分数;错误fi
#判断三角形#!/bin/bashread -p \"Please input three sides:\" a b cif((a+b>c&&b+c>a&&a+c>b))	#是三角形thenif((a==b&&a==c))	#是等边三角形thenecho \"equilateral triangle\"elif((a==b||b==c||a==c))	#是等腰三角形thenecho \"isosceles triangle\"elif((a*a+b*b==c*c||a*a+c*c==b*b||b*b+c*c==a*a))	#是直角三角形,a*a不能用a^2表示thenecho \"right triangle\"elseecho \"general triangle\"	#是一般三角形fielseecho \"error\"	#不是三角形fi

六、循环

  1. 循环四要素:
    ①初始化表达式
    ②布尔值测试表达式
    ③循环体
    ④更改表达式

  2. while循环格式

    while((②))
    do


    done

#打印1-100#!/bin/bashi=1while((i<=100))doecho $ii=$[$i+1]	#或((i++)) 或 let i+=1done
#1-100相加#!/bin/bashi=1sum=0while((i<=100))dosum=$[$sum+$i]	#或 ((sum=sum+i)) 或 let sum=sum+ii=$[$i+1]	#或((i++)) 或 let i+=1doneecho $sum
  1. for循环格式
    for((①;②;④))
    do

    done
#100以内奇数之和#!/bin/bashsum=0for((i=1;i<100;i+=2))do((sum+=i))doneecho $sum
  1. break
#判断一个键入的数是不是素数#!/bin/bashread -p \"Please input an integer:\" ifor((j=2;j<i;j++))doif ((i%j==0))	#有因数就输出“不是素数”,并breakthenecho \"$i is not a prime mumber!\"breakfidoneif((i==j))	#如果没有因数,就会一直遍历到j=ithenecho \"$i is a prime number!\"fi

七、ASCⅡ

#打印一个*echo -e \"\\x2a\"	#-e是允许使用转义字符,2a是*的ASCⅡ值
#打印一行*#!/bin/bashline=\"\\x2a\"for((i=1;i<100;i++))doline=$line\"\\x2a\"doneecho -e $line
#打印5行10列*#!/bin/bashfor((j=0;j<5;j++))	#或((j=1;j<=5;j++))doline=\" \"for((i=0;i<10;i++))	#或((i=1;i<=10;i++))doline=$line\"\\x2a\"doneecho -e $linedone

八、例子

  1. 编写程序,找出100到999之间所有的\”水仙花\”数。所谓水仙花数,指的是一个三位数,各位数字的立方和等于该数本身,比如:153=111+555+333,所以153就是水仙花数。水仙花数共有四个:153,370,371,407。
#找出100到999之间所有的\"水仙花\"数#!/bin/bashfor((i=100;i<1000;i++))do((j=i/100))((k=i%100/10))((l=i%10))if((j*j*j+k*k*k+l*l*l==i))thenecho $ifidone
  1. 一口深77米的井下有一只青蛙,这只青蛙白天往上爬7米,夜里下落5米,问第几天爬出井口?
#青蛙爬井#!/bin/bashh=0for((i=1;;i++))do((h+=7))if((h>=77))thenecho $ibreakfi((h-=5))done
  1. 打印图形
***************#!/bin/bashfor((i=0;i<5;i++))doline=\" \"for((j=0;j<i;j++))doline=$line\"\\x2a\"doneecho -e $linedone
***************#!/bin/bashfor((i=0;i<5;i++))doline=\" \"for((j=0;j<5-i;j++))doline=$line\"\\x2a\"doneecho -e $linedone
** ** * ** * * ** * * * ** * * ** * ** **#!/bin/bashfor((i=0;i<10;i++))doif((i<5))thenn=4-im=i+1elsen=i-4m=9-ififor((j=0;j<n;j++))doecho -n \" \"donefor((j=0;j<m;j++))doecho -n \"* \"doneecho \"\"done#或—————————————————————————————————————————————————————————————————#!/bin/bashfor((i=0;i<5;i++))doline=\" \"for((j=0;j<4-i;j++))doline=$line\"\\x20\"donefor((k=0;k<i+1;k++))doline=$line\"\\x2a\\x20\"doneecho -e $linedonefor((i=0;i<4;i++))doline=\" “for((j=0;j<i+1;j++))doline=$line\"\\x20\"donefor((k=0;k<4-i;k++))doline=$line\"\\x2a\\x20\"doneecho -e $linedone
赞(0) 打赏
未经允许不得转载:爱站程序员基地 » Shell命令的实例