学习笔记-shell脚本

学习内容:

《鸟哥Linux》12章:学习shell脚本

学习过程:

12.2简单的shell脚本练习

12.2.1简单范例

  • read命令
 read -p  	#提示信息
 read -t	#录入时间
  • date命令
 date --date='1 days ago' +%Y%m%d
  • 判断文件名fileuser是否为空,如果为空,设置默认文件名“filename”
 filename=${fileuser:-"filename"}
  • 数值运算
echo (( 13%3 ))		# var=$((运算内容))
echo "123.123*55.9" | bc		#bc命令

12.2.2脚本的执行方式差异(待补充)

  • source script
  • sh script
  • ./script

12.3善用判断式

12.3.1利用test命令的测试功能

  • test命令
    条件判断,符合返回0,不符合返回其他
[root@centos7-4G ~]# test -e ./zhai && echo "exit" || echo "Not exist"
exit

test命令
文件名【文件类型】判断
-e是否存在
-f是否为文件(file)
-d是否为目录(directory)
多重提案件判定
-a(and)
-o(or)
!反向状态

12.3.2 利用判断符号[]

注意:中括号的两端需要有空格符来分隔,【==】两端需要空格分隔

  1. 中括号[]内的每个组件都需要有空格来分隔
  2. 在中括号内的变量,最好都以双引号括号起来
  3. 在中括号内的常数,最好都以单或者双引号括号起来

12.3.3 shell脚本的默认变量($0 、 $1…)

默认变量
$0脚本名
$1第一个参数
$#参数个数
$@代表【“$1” “$2” “$3”】,每个变量是独立的
$*代表【“$1c$2c$3”】,其中c为分隔符,默认为空格,如 【“$1 $2 $3”】
  • shift:造成参数变量号码的偏移
    shift代表拿掉最前面几个参数

12.4条件判断式

12.4.1 利用if…then

#语法1
if [ 条件判断式 ] ; then
	dosomethings
fi

#语法2
if [ 条件判断式 ] ; then
	dosomethings
else
	dosomethings2
fi

#语法3
if [ 条件判断式1 ] ; then
	dosomethings
elif [ 条件判断式2 ] ; then
	dosomethings2
else
	dosomethings3
fi

例程1:查看80:WWW,22:SSH服务是否开启

#!bin/bash
#查看80:WWW,22:SSH服务是否开启
#提示信息
echo "detect server's services"
echo -e "detect www,ftp,ssh,mail.\n"
#重定向
testfile=/dev/shm/netstat/checking.txt
netstat -tuln > ${testfile}
testing=$(grep ":80 " ${testfile})
if [ "${testing}" != "" ] ; then
        echo "WWW is running in system."
fi
testing=$(grep ":22 " ${testfile})
if [ "${testing}" != "" ] ; then
        echo "ssh is running in system."
fi

例程2:入伍日期

12.4.2 利用case…esac判断

case…in…esac语法:

case $变量名称 in 
	"第一个变量")			#变量建议用双引号括起来,,关键字则为右圆括号
		dosomethings
		;;					#每个类型结尾用两个连续的分号处理
	"第二个变量")
		dosomethings
		;;
	*)						#最后一个变量内容用*表示所有其他值
		dosomethings
		exit 1
		;;
esac

例程:

#!/bin/bash
case $1 in 
	"one")			
		echo "your choice is one"
		;;					
	"two")
		echo "your choice is one"
		;;
	*)						
		echo "Usage ${0} {one|two}"
		exit 1
		;;
esac

运行结果:

[root@centos7-4G ~]# sh show_num.sh one
your choice is one
[root@centos7-4G ~]# sh show_num.sh three
Usage show_num.sh {one|two}

12.4.3 利用function功能

语法:

function fname() {
	dosomething
}

注意:shell脚本从上往下运行,设置function一定要在程序的最前面

function也拥有内置变量,例程:

#!/bin/bash
#show_num.sh
#根据输入参数显示数字
function printit(){
	echo "Your choice is ${1}"
}
case ${1} in 
	"one")
		pirntit 1
		;;
	"two")
		printit 2
		;;
	*)
		echo "Usage ${0} {one|two}"
		;;
esac

学习时间:

2022/10/11

1. 什么是shell脚本Shell脚本是一种编程语言,它是在Unix和Linux操作系统中使用的一种脚本语言。它可以帮助用户自动化任务,并且可以运行一系列命令。 Shell脚本通常以.sh扩展名结尾。 2. 为什么要学习shell脚本学习shell脚本可以帮助你自动化任务,提高工作效率。Shell脚本也可以帮助你编写小工具,方便你自己或其他人使用。Shell脚本还可以帮助你更好地理解Linux和Unix操作系统。 3. 如何编写一个简单的shell脚本? 首先,在命令行中输入命令nano test.sh,创建一个名为test.sh的文件。然后,在文件中输入以下内容: #!/bin/bash echo "Hello World" 接着,按下Ctrl + X,然后按下Y,最后按下Enter,保存并退出文件。接下来,您需要在命令行中输入以下命令: chmod +x test.sh ./test.sh 这将使test.sh文件可执行,并运行脚本。在命令行中,您应该看到输出“Hello World”。 4. shell脚本中的注释是什么? 注释是用于向脚本中添加说明和文档的文本。在Shell脚本中,注释以“#”开头。注释不会被脚本解释器执行,但可以帮助其他人更好地理解脚本。 5. 如何在shell脚本中使用变量? 变量是一个用于存储值的占符。在Shell脚本中,您可以使用以下语法来定义变量: my_variable="Hello World" 您可以使用echo命令来输出变量的值: echo $my_variable 6. 如何在shell脚本中使用条件语句? 在Shell脚本中,您可以使用条件语句来执行基于条件的操作。以下是一个示例条件语句: if [ $my_variable = "Hello World" ] then echo "The variable contains Hello World" else echo "The variable does not contain Hello World" fi 7. 如何在shell脚本中使用循环? 在Shell脚本中,您可以使用for循环或while循环来执行重复的操作。以下是一个示例for循环: for i in 1 2 3 4 5 do echo $i done 以上代码将输出数字1到5。 8. 如何在shell脚本中使用函数? 在Shell脚本中,您可以使用函数来组织和重复使用代码。以下是一个示例函数: function say_hello { echo "Hello World" } 您可以通过以下方式调用函数: say_hello 9. 如何从shell脚本中读取用户输入? 在Shell脚本中,您可以使用read命令来从用户那里读取输入。以下是一个示例: echo "What is your name?" read name echo "Hello $name" 以上代码将提示用户输入他们的名字,并输出“Hello”后跟用户的名字。 10. 如何在shell脚本中使用命令行参数? 在Shell脚本中,您可以使用$1、$2、$3等变量来访问命令行参数。例如,以下是一个示例脚本,它接受两个命令行参数并将它们相加: #!/bin/bash sum=$(($1 + $2)) echo "The sum of $1 and $2 is $sum" 您可以使用以下命令来运行脚本并传递两个参数: ./test.sh 2 3 以上代码将输出“The sum of 2 and 3 is 5”。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值