2021-10-14 shell入门命令

文章目录

shell脚本

shell脚本
1.执行
	1.1 #!/bin/bash    它告诉系统这个脚本需要什么解释器来执行,即使用哪一种 Shell
	1.2 echo "Hello World !"
	1.3 vi test.sh 新建shell脚本
	1.4 chmod -x ./test.sh 将脚本变为可执行文件
	1.5 ./test.sh 或者/bin/bash ./test.sh  执行脚本
2.变量
	2.1 your_name="songhao" =两边不能有空格 变量命名规范和java一样
	2.2 除了显式地直接赋值,还可以用语句给变量赋值,如:for file in `ls /etc` 以上语句将 /etc 下目录的文件名循环出来。
    2.3 只读变量readonly myUrl
	2.4 unset myUrl 为删除变量,删除完以后的变量不可以使用
	2.5 shell 中主要的变量类型有字符串和数字,字符串可以用单引号也可以用双引号,但是单引号中是无法引入变量的。
	2.6 获取字符串长度 string='songhao' echo ${#string} 输出为7
	2.7 截取字符串 string='songhao' echo ${string:1:4} 输出为 ongh  第一个字符的索引是0
	2.8 查找字符串 string='songhao' echo `expr index "$string" ah` 输出5
	2.9注释
		单行注释 #
		块注释 定义注释关键字    :<<  !  注释的内容 !
3.参数传递
	3.1 执行shell脚本的时候,我们可以向脚本传递参数,脚本获取参数的方式是 $n, n是第n个参数。
	3.2 显示参数个数:$#,显示所有参数$* #以一个字符串输出   $@ 每个参数都是一个字符串输出
4.数组
	4.1 定义: 数组名=(值1 值2 值3 值4 ....) 或者 数组名[0]=值1 、数值名[1]=值2 #可以不使用连续下标,而且下标没有范围限制
	4.2 读取: ${数组名[下标]} 读取全部则 ${数组名[@]}  #输出是以字符串的格式输出 格式为  '值1 值2 值3'
	4.3 获取数组长度: ehco ${#数组名[@]}
5.运算符
	5.1 算术运算符
		val=`expr 2 + 3` echo "结果为 $val"  输出为5
		注:
			1.表达式之间必须要有空格
			2.表达式必须要用``包裹
			3.条件表达式必须放在方括号之间  例如:[$a == $b]
			4.乘法必须要在* 的左边加上\才可以实现运算
			5.if...then...fi 是条件语句
	5.2 关系运算符(只支持数字,不支持字符串,除非字符串的值是数字)
		-eq:判断是否相等
		-ne: 判断是否不相等
		-gt: 相等于大于号
		-lt: 相等于小于号
		-ge: 大于等于
		-le: 小于等于
	5.3 布尔运算符
		! 非运算,例如:[!false] 则为true
		-o 或运算  or
		-a 与运算  and
	5.4 逻辑运算符
		&& and
		|| or
	5.5 字符串运算符
		=: 判断两个字符串是否相等
		!=: 判断两个字符串是否不相等
		-z:判断字符串长度是否为0
		-n:判断字符串长度是否不为0
		$:  判断字符串是否为空
	5.6 文件测试运算符
		-... file 
6.echo命令
	6.1 输出"",需要用到转义字符 echo "\"\""
	6.2 read 变量名 命令,类似于java的scanner,变量值需要执行完脚本手动输入
	6.3 echo -e "OK! \n" 显示换行  -e 开启转义
	6.4 echo -e "OK! \c" 显示不换行   
	6.5 echo "my name is songhao!" > myName 显示结果定向至文件 #会自动创建文件,如果没有指定目录会到当前目录下
	6.6 echo '$name\"' 不转义或者取变量用单引号
	6.7 echo `date` `` 执行命令
7.printf命令
	与echo命令相比,输出格式更加强大
8.test命令
	test可以理解为[] 是逻辑判断
9.Shell 流程控制
	1.if else 
		if condition then command1 else command2 fi 中不可有分支的代码为空
	2.if else-if else
		if condition1 then command1 elif condition2 then command2 else command3 fi
	3.for 循环 
		for var in item1 item2 ... itemN
		do command1 command2 ... commandN done
		例子:
		for loop in 1 2 3 4 5
		do
			echo "The value is: $loop"
		done
	4.while
		while condition
		do
			command
		done
		例子:
		#!/bin/bash
		int=1
		while(( $int<=5 ))
		do
			echo $int
			let "int++"
		done
	5.until循环
	6.case ... esac
	7.break 终止后面所有循环
	8.continue 终止本次循环
10.函数
	10.1 返回值的函数定义,例如:
		demoFun(){
			echo "这是我的第一个 shell 函数!"
		}
		echo "-----函数开始执行-----"
		demoFun
		echo "-----函数执行完毕-----"
	10.2 有返回值的函数定义,例如:
		funWithReturn(){
			echo "这个函数会对输入的两个数字进行相加运算..."
			echo "输入第一个数字: "
			read aNum
			echo "输入第二个数字: "
			read anotherNum
			echo "两个数字分别为 $aNum$anotherNum !"
			return $(($aNum+$anotherNum))
		}
		funWithReturn
		echo "输入的两个数字之和为 $? !"
		# 注:函数返回值在调用该函数后通过 $? 来获得。
	10.3 有入参的函数,例如:
		funWithParam(){
			echo "第一个参数为 $1 !"
			echo "第二个参数为 $2 !"
			echo "第十个参数为 $10 !"
			echo "第十个参数为 ${10} !"
			echo "第十一个参数为 ${11} !"
			echo "参数总数有 $# 个!"
			echo "作为一个字符串输出所有参数 $* !"
		}
		funWithParam 1 2 3 4 5 6 7 8 9 34 73
		# 注:$10 不能获取第十个参数,获取第十个参数需要${10}。当n>=10时,需要使用${n}来获取参数。
11.shell输入输出重定向
	1.输出内容
		command1 > file1 将内容输出到file1,覆盖原来的内容,如果想在文件末尾追加,则需要使用 >>
	2.输入命令
		command1 < file1 读取file的命令并且执行
	3.输入输出
		command1 < infile > outfile,同时替换输入和输出,执行command1,从文件infile读取内容,然后将输出写入到outfile中。
12.shell文件包含
	. filename 或者 source filename   把filename文件引入
	注:被引入的文件不需要可执行

	

	





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值