몇 가지 기본하지만 흥미로운 쉘 스크립트

A. 인쇄 9 * 9 곱셈 테이블

1 #! / 빈 / 떠들썩한 파티
 2   I 서열`9`
 3   
4      에 대해 J  ' 서열 $ i`
 5      수행 
6          에코 -n " $ 난 * $ J = $ [내가 * J]가 " 
7      
8      에코 
9  

II. 가위 바위 보 게임

. (1) #! / 빈 / 배쉬
 2 게임 = (가위 바위 보)
 . 3 NUM = $ [임의의 % . (3) ]
 . 4 컴퓨터 = $ {게임 [$ NUM]}
 . 5 # 펀치 임의로 생성하고 배열 게임에 저장 될 수있다 [$ NUM ] 게임 [ 0 ] 게임 [ 1 ] 게임 [ 2 ]를 가위 바위를 나타내는
 6.  에코  " 를 선택 제스처 펀치 다음 프롬프트에있어서 
7.  에코  " 돌 : 위 1 : 2 천 :. 3 " 
. 8 읽기 -p " 제발 펀치 (2, 3) " 다음 사람
 9  케이스가 사람을 $ 에서 
10  )
 11   IF[$ NUM -eq 0 ] 
12되는    에코  " 타이 " 
13이다   ELIF는 [$ NUM -eq . 1 ] 그 후에 
14    에코  " 는 승리 " 
15   다른 
16    에코  " 컴퓨터 승 ' 
. 17   인터넷 ;
 18은  2 )
 (19).   IF [$ NUM -eq 0 ] (가) 다음 
20되는    에코  " 컴퓨터 승리 " 
21 인   ELIF [$ -eq NUM은 1이다. ], 그 후에 
22은    에코  "그리기 " 
(23)가   다른 
24    에코  " 당신이 이길 " 
25   인터넷 ;;
 (26)는  3. )
 27   IF [$ NUM -eq 0 ] 당시 
28    에코  " 당신이 이길 " 
(29)   의 elif [$ NUM -eq 1. ] 당시 
30    에코  " 컴퓨터 승 " 
31   다른 
32    에코  " 무승부 "

III. 게임을 추측

1 #! / 빈은 / bash는
 2 # 스크립트는 사용자가 사용자 입력을 기반으로, 추측하라는 메시지가 표시됩니다 적은 100보다 난수를 생성하는,> 프롬프트를 추측, 추측 추측 큰 또는 작은, 당신이 바로 지금까지 추측까지.
 3 NUM = $ [랜덤 %의 100 + 1 ] # 1 - 난수 (100)
 4. 읽기 -p " 컴퓨터에서 생성 된 난수 1 (100)에, 생각하십시오 " cai1
 . 5 L = 0 
6.  그동안 :
 7.  
8.   송출의 L ++
 . 9   IF가 [L -eq $ 1. ] 그 후에 
10    IF [-eq $ $ cai1 NUM] 그때 
. 11     에코  " 축하, 추측 " 
12    출구
 (13)는    ELIF [-gt $ $ cai1 NUM] (가) 다음 
14     에코  " 큰 추측 " 
15    다른 
16     에코  " 작은 추측 " 
17.    인터넷 
(18)은   다른 
19.    읽기 -p " : 계속 " CaI2
 20은    IF [$ CaI2 -eq NUM $] 당시 
21     에코  " 축하합니다, 당신은 추측 " 
22     번 출구
 (23)    의 elif [$ 카이 2 -gt $ NUM]는, 당시 
24은     에코  " 추측 큰 " 
25    다른 
(26)    에코  " 작은 추측 " 
27    파이 
28   파이 
(29)는  DONE

정렬 IV. 세 가지 임의의 숫자

1. 대화

 1 #!/bin/bash
 2 #依次提示用户输入三个整数,脚本根据数字大小排序输出3个数字
 3 read -p "请输入一个整数:" num1
 4 read -p "请输入一个整数:" num2
 5 read -p "请输入一个整数:" num3
 6 #从小到大排序,设定最后输出num1,num2,num3,脚本运行中将最小,中间,最大值分别赋予这三个变量,引入对调变量tmp
 7 tmp=0
 8 #如果num1大于num2则对调1和2,保持num1最小
 9 if [ $num1 -gt $num2 ];then
10  tmp=$num1
11  num1=$num2
12  num2=$tmp
13 fi
14 #如果num1大于num3则对调1和3,保持num1最小
15 if [ $num1 -gt $num3 ];then
16  tmp=$num1
17  num1=$num3
18  num3=$tmp
19 fi
20 #如果num2大于num3则对调2和3,保持num2更小
21 if [ $num2 -gt $num3 ];then
22  tmp=$num2
23  num2=$num3
24  num3=$tmp
25 fi
26 echo "排序后的数据为:$num1,$num2,$num3"

 2.非交互式

 1 #!/binbash
 2 l=0
 3 tmp=0
 4 for i in `cat /home/student/桌面/shell脚本/文档/paixu.txt` #一个含3个数字的文件
 6 do
 7  let l++
 8  if [ $l -eq 1 ];then
 9   num1=$i
10  fi
11  if [ $l -eq 2 ];then
12   num2=$i
13   if [ $num1 -gt $num2 ];then
14   tmp=$num1
15   num1=$num2
16   num2=$tmp
17   fi
18  fi
19  if [ $l -eq 3 ];then
20   num3=$i
21   if [ $num1 -gt $num3 ];then
22   tmp=$num1
23   num1=$num3
24   num3=$tmp
25   fi
26   if [ $num2 -gt $num3 ];then
27   tmp=$num2
28   num2=$num3
29   num3=$tmp
30   fi
31  fi
32 done
33 echo "从小到大排序:$num1,$num2,$num3"

 五.点名器

 1 #!/bin/bash
 2 #提前准备文件user.txt,一行一个姓名
 3 read -p "请输入想要抽到的人数:" xxx
 4 l=1
 5 while [ $l -le $xxx ]
 6 do
 7 let l++
 8 line=`cat /home/student/桌面/shell脚本/文档/user.txt | wc -l`
 9 num=$[RANDOM%line+1]
10 sed -n "${num}p" /home/student/桌面/shell脚本/文档/user.txt
11 sleep 0.5
12 done
 

 六.打印国际象棋棋盘

 1 #!/bin/bash
 2 #两个变量i和j代表行和列
 3 for i in {1..8}
 4 do
 5  for j in {1..8}
 6  do
 7   sum=$[i+j]
 8   if [ $[sum%2] -eq 0 ];then #偶数
 9    echo -ne "\033[46m \033[0m"
10   else
11    echo -ne "\033[47m \033[0m"
12   fi
13  done
14  echo
15 done

 

七.fork炸弹(会快速消耗计算机资源,导致计算机死机)(请在虚拟机中实验,千万不要在真机尝试,若操作失误请重启计算机)

1 .(){
2 .|.&
3 }
4 .

八.打印斐波那契数列(后一个数字永远是前两个数字之和)

1 #!/bin/bash
2 list=(0 1)
3 for i in `seq 2 11`
4 do
5  list[$i]=`expr ${list[-1]} + ${list[-2]}`
6 done
7 echo ${list[@]}

九.打印一些特殊图形

 1 #!/bin/bash
 2 clear
 3 for ((i=1;i<=9;i++))
 4 do
 5  for((j=1;j<=i;j++))
 6  do
 7   echo -n "$i"
 8  done
 9  echo""
10 done
11 #图1
12 
    
13 read -n1 "按任意键继续" key
14 clear
15 for ((i=1;i<=5;i++))
16 do
17  for((j=1;j<=i;j++))
18  do
19   echo -n "|"
20  done
21  echo "_"
22 done
23 #图2
24 
    
25 read -n1 "按任意键继续" key
26 clear
27 for ((i=1;i<=5;i++))
28 do
29  for((j=1;j<=i;j++))
30  do
31   echo -n "*"
32  done
33  echo""
34 done
35 
36 for ((i=5;i>=1;i--))
37 do
38  for((j=1;j<=i;j++))
39  do
40   echo -n "*"
41  done
42  echo""
43 done
44 #图3
    

추천

출처www.cnblogs.com/cocl888/p/12157073.html