shell编程入门

简介:

  本博文面向零基础,一步一步学shell编程,入门!

 

 

 

#!/bin/bash

echo "前进程号:"$$

echo "start"

sleep 10

kill  $$

sleep 900000000

echo "end"

 

[root@weekend110 shell]# cat for.sh 
#!/bin/bash
for ((i=0;i<10;i++))
do
echo $i
done
[root@weekend110 shell]# for.sh 
0
1
2
3
4
5
6
7
8
9
[root@weekend110 shell]#

 

 

[root@weekend110 shell]# more for1.sh 
#!/bin/bash
for i in 0 1 2 3 4 5 6 7 8 9
do
echo $i
done
[root@weekend110 shell]# for1.sh 
0
1
2
3
4
5
6
7
8
9
[root@weekend110 shell]#

 

 

 

 

[root@weekend110 shell]# more for2.sh 
#!/bin/bash
for i in {0..9}
do
echo $i
done
[root@weekend110 shell]# for2.sh 
0
1
2
3
4
5
6
7
8
9
[root@weekend110 shell]#

 

 

 

 

 

 

[root@weekend110 shell]# more while.sh 
#!/bin/bash
while [ $1 -gt 2 ]
do

echo "true"
sleep 1
done
[root@weekend110 shell]#

 

 

 

[root@weekend110 shell]# more until.sh 
#!/bin/bash
until [ $1 -gt 2 ]
do

echo "true"
sleep 1
done

[root@weekend110 shell]#

 

 

 

 

 

[root@weekend110 shell]# more if.sh 
#!/bin/bash
if [ $1 -eq 1 ] 
then
echo 'one'
else
echo 'none'
fi
[root@weekend110 shell]# more if1.sh 
#!/bin/bash
if [ $1 -eq 1 ] 
then
echo 'one'
elif [ $1 -eq 2 ]
then
echo 'two'
elif [ $1 -eq 3 ]
then
echo 'three'
else
echo 'none'
fi
[root@weekend110 shell]#

 

 

 

 

 

 

 

 

[root@weekend110 shell]# more case.sh 
#!/bin/bash
case $1 in
1)
echo 'one'
;;
2)
echo 'two'
;;
3)
echo 'three'
;;
*)
echo 'none'
;;
esac
[root@weekend110 shell]# case.sh
none
[root@weekend110 shell]#

 

 

 

 

 

 

 

 

这里,我就在,/下新建shell目录,用来作为shell编程的入门。

[root@weekend110 /]# ls

bin   data  etc   lib    lost+found  misc  net  proc  sbin     srv  tmp  var

boot  dev   home  lib64  media       mnt   opt  root  selinux  sys  usr

[root@weekend110 /]# mkdir shell

[root@weekend110 /]# ls

bin   data  etc   lib    lost+found  misc  net  proc  sbin     shell  sys  usr

boot  dev   home  lib64  media       mnt   opt  root  selinux  srv    tmp  var

[root@weekend110 /]# cd shell/

[root@weekend110 shell]# ll

total 0

[root@weekend110 shell]#

 

[root@weekend110 shell]# ls

[root@weekend110 shell]# vim break1.sh

 

[root@weekend110 shell]# ll

total 4

-rw-r--r--. 1 root root 79 Oct 22 09:15 break1.sh

[root@weekend110 shell]# chmod +x break1.sh

[root@weekend110 shell]# ll

total 4

-rwxr-xr-x. 1 root root 79 Oct 22 09:15 break1.sh

[root@weekend110 shell]# cat break1.sh    //如果变量i达到2,就跳出循环

#!/bin/bash

for ((i=0;i<10;i++))

do

if [ $i -eq 2 ]

then

break

fi

echo $i

done

[root@weekend110 shell]# break1.sh

-bash: break1.sh: command not found

[root@weekend110 shell]# ./break1.sh                  因为,此刻,还没加入到环境变量

0

1

[root@weekend110 shell]#

 

[root@weekend110 shell]# pwd

/shell

[root@weekend110 shell]# vim /etc/profile

export PATH=$PATH:/shell/

 

[root@weekend110 shell]# source /etc/profile

[root@weekend110 shell]# break1.sh

0

1

[root@weekend110 shell]#

这样,就达到了。

 

 

现在,写,while循环在外,for循环在内。

[root@weekend110 shell]# ls

break1.sh  break2.sh

[root@weekend110 shell]# cat break2.sh

#!/bin/bash

while [ 1 -eq 1 ]

do

 

for ((i=0;i<10;i++))

do

if [ $i -eq 2 ]

then

break

fi

echo $i

done

echo 'yes'

sleep 1

done

[root@weekend110 shell]# break2.sh

0

1

yes

0

1

yes

0

1

yes

0

1

yes

^C

[root@weekend110 shell]#

 

[root@weekend110 shell]# cat break3.sh

#!/bin/bash

while [ 1 -eq 1 ]

do

 

for ((i=0;i<10;i++))

do

if [ $i -eq 2 ]

then

break 2              //在这里,默认是1,写个2,则说的是跳出2层循环。

fi

echo $i

done

echo 'yes'

sleep 1

done

[root@weekend110 shell]# break3.sh

0

1

[root@weekend110 shell]#

 

跳出单循环

for((i=0;i<10;i++))

do

echo $i

if [ $i -eq 2 ]

then

break

fi

done

 

跳出内循环

while [ 1 -eq 1 ]

do

echo 'yes'

sleep 1

for((i=0;i<10;i++))

do

echo $i

if [ $i -eq 2 ]

then

break

fi

done

done

 

跳出外循环

while [ 1 -eq 1 ]

do

echo 'yes'

sleep 1

for((i=0;i<10;i++))

do

echo $i

if [ $i -eq 2 ]

then

break 2

fi

done

done

 

[root@weekend110 shell]# cat continue.sh

#/bin/bash

for ((i=0;i<10;i++))

do

if [ $i -eq 2 ]

then

continue

fi

echo $i

done

[root@weekend110 shell]# continue.sh

0

1

3

4

5

相关文章
|
2月前
|
Unix Shell Linux
LeetCode刷题 Shell编程四则 | 194. 转置文件 192. 统计词频 193. 有效电话号码 195. 第十行
本文提供了几个Linux shell脚本编程问题的解决方案,包括转置文件内容、统计词频、验证有效电话号码和提取文件的第十行,每个问题都给出了至少一种实现方法。
LeetCode刷题 Shell编程四则 | 194. 转置文件 192. 统计词频 193. 有效电话号码 195. 第十行
|
2月前
|
Shell Linux
Linux shell编程学习笔记30:打造彩色的选项菜单
Linux shell编程学习笔记30:打造彩色的选项菜单
|
12天前
|
运维 监控 Shell
深入理解Linux系统下的Shell脚本编程
【10月更文挑战第24天】本文将深入浅出地介绍Linux系统中Shell脚本的基础知识和实用技巧,帮助读者从零开始学习编写Shell脚本。通过本文的学习,你将能够掌握Shell脚本的基本语法、变量使用、流程控制以及函数定义等核心概念,并学会如何将这些知识应用于实际问题解决中。文章还将展示几个实用的Shell脚本例子,以加深对知识点的理解和应用。无论你是运维人员还是软件开发者,这篇文章都将为你提供强大的Linux自动化工具。
|
1月前
|
Shell
Shell编程(下)
Shell编程(下)
86 1
|
1月前
|
Shell Linux Windows
Shell编程(上)
Shell编程(上)
38 1
|
1月前
|
Shell Linux 开发工具
|
1月前
|
监控 Unix Shell
shell脚本编程学习
【10月更文挑战第1天】shell脚本编程
62 12
|
2月前
|
Shell Linux
Linux shell编程学习笔记82:w命令——一览无余
Linux shell编程学习笔记82:w命令——一览无余
|
2月前
|
存储 Unix Shell
shell脚本编程基础
【9月更文挑战第4天】
44 12
|
2月前
|
Shell Linux
Shell 编程 编写hello word
Shell 编写hello word
47 5