shell的基本命令操作

shell的基本操作

shell简介:

  什么是shell:
		Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。Shell 既是一种命令语言,又是一种程序设计语言。
  什么是shell脚本:
		Shell 脚本(shell script),是一种为 shell 编写的脚本程序。

shell的种类:

Linux 的 Shell 种类众多,常见的有:
		Bourne Shell(/usr/bin/sh或/bin/sh)
		Bourne Again Shell(/bin/bash)
		C Shell(/usr/bin/csh)
		K Shell(/usr/bin/ksh)
		Shell for Root(/sbin/sh)
我们要学习是Bash,因为易用和免费,在日常工作中被广泛使用

最简单的shell脚本:
		#!/bin/bash
		echo "HelloWorld"
		其中#!是一个约定标记,他告诉系统脚本需要什么解释器来执行       																																																																								

echo命令 用于向窗口输出文本
通过使用'bash'命令执行shell脚本  'bash hello.sh' 
如果你想让你的shell文件像脚本文件一样运行
	需要添加一下可执行权限
	'chmod +x hello.sh'

变量的定义:

例子:my_name="huguanyu"
	注意事项:
		等号两边不能有空格
		变量名只能使用英文字符,数字和下划线,首个字符不能以数字开头
		名字中间不能有空格 可以使用下划线
		不能使用标点符号
		不能使用bash里面的关键字

		使用变量时,需要在变量前面加上$符号
		例子:echo ${my_name}  
		花括号可加可不加  加上是为了帮助解释器识别变量的边界
		例子:echo ${my_name}is huguanyu
		推荐加上{}
		
		为变量加上readonly my_name

		删除变量:
			unset my_name

变量类型:
运行shell时,会同时存在三种变量:
	1) 局部变量 局部变量在脚本或命令中定义,仅在当前shell实例中有效,其他shell启动的程序不能访问局部变量。
	2) 环境变量 所有的程序,包括shell启动的程序,都能访问环境变量,有些程序需要环境变量来保证其正常运行。必要的时候shell脚本也可以定义环境变量。
	3) shell变量 shell变量是由shell程序设置的特殊变量。shell变量中有一部分是环境变量,有一部分是局部变量,这些变量保证了shell的正常运行

位置变量
	$0:表示脚本名
	`$1 ~ $9`:表示传递给脚本的参数
特殊变量
	$#:传递给脚本参数的个数
	$*:传递给脚本的所有参数
	$?:上次命令执行情况,0表示正确,其他表示错误

单双引号的区别
		- 双引号:可以是除$、`、\、"之外的任意字符
		- 单引号:其中的任意字符都不解析,都会原样输出
		- 反引号:会将其中的内容作为命令执行
		- 反斜线:转义特定的字符,如:&、*、?、|、^、$、`

字符串操作

计算长度:${#name}
提取字符:${name:2:3}         从下表为2的字符开始提取,提取3个字符

数组操作

定义:a=(1 2 3)
	成员:${a[0]}
	长度:${#a[@]}
	所有元素:${a[*]},使用for-in遍历时需要提取元素

seq:
说明:生成连续的整数
	 示例:`seq 1 10`,生成1-10的连续整数

expr
说明:运算一个表达式
	示例:
	expr 1 + 2			# 结果为3
	echo `expr 1 + 2`	# 结构为3
	expr 3 \* 5			# *需要转义

各种运算

test命令,成功为真,失败为假;测试结果通过$?检查,0代表真,1代表假。
	 #!/bin/bash

	 if test 1 -lt 2; then
		echo "OK"
	 fi
	 # []中,前后都需要空格
	 if [ 1 -lt 2 ]; then
		echo "ok"
	 fi

数值比较

	-lt:小于
	-le:小于等于
	-gt:大于
	-ge:大于等于
	-eq:相等
	-ne:不相等

字符串测试

	=:相等
    !=:不相等
	-z:字符串长度是否为0
	-n:字符串长度是否不为0

文件判断
	-f:普通文件
	-d:目录文件
	-c:字符设备文件
	-b:块设备文件
	-w:文件存在,且可写
	-x:文件存在,且可执行
	-s:文件存在,且至少有一个字符

逻辑运算

	-a:逻辑与(and),也可以使用 && 进行转换
	-o:逻辑或(or),可以使用||进行转换
	 !:逻辑非
	 示例:
		  if [ 1 -lt 3 -a 2 -lt 3 ]; then
			echo "ok"
		  fi

		  if [ 1 -lt 3 ] && [ 2 -lt 3 ]; then
			echo "ok"
		  fi

		  if [ ! 1 -gt 3 ]; then
			echo "ok"
		  fi

分支结构

if-else语句:
	if [ 1 -lt 3 -a 2 -lt 3 ]; then
			echo "ok"
	else[ 1 -lt 3 ] && [ 2 -lt 3 ]; then
			echo "ok"
	fi

	if [ ! 1 -gt 3 ]; then
		echo "ok"
	fi
	
case in 语句:
case
	   echo '输入 1 到 4 之间的数字:'
	   echo '你输入的数字为:'
	   read aNum
	   case $aNum in
				1)  echo '你选择了 1'
				;;
				2)  echo '你选择了 2'
				;;
				3)  echo '你选择了 3'
				;;
				4)  echo '你选择了 4'
				;;
				*)  echo '你没有输入 1 到 4 之间的数字'
				;;
esac

循环结构

for-in及for语句:
1.
	for x in a b c
	do 
		echo $x
	done
2.
	for x in /etc/*
	do 
		echo $x
	done
3.
	for x in `seq 1 10`
	do 
		echo $x
	done
4.
	for i in `seq 1 100`
	do 
		let j+=$i
	done
	echo $j
5.
	a=(1 2 3)
	for x in ${a[*]}
	do 
		echo $x
	done
6.
	for ((i=0;i<=${#a[@]};i++))
	do
		echo ${a[$i]}
	done
		  

while  
	i=1
	sum=0
	while [ $i -le 10 ]
	do
		#((sum+=$i))
		#let sum+=$i
		sum=$[$sum+$i]    前面这几个函数都是相等的,写一个就行

		# ((i++))
		# let i++
		# let i+=1
		i=$[$i+1]       前面这几个函数都是相等的,写一个就行
	done
	echo $sum
		  ```

until语句:  
	i=1
	until [ $i -gt 10 ]
	do
		echo $i
	((i++))
	done

函数

1.
demo()
	{
		echo 'call demo func'
	}

	demo
2.
arg()
	{
		echo $1
		echo $2
		echo $#
		echo $*
		return 123
	}
arg 1 2
# $? 表示函数的返回值
echo $?
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
4.
funWithReturn(){
		echo "这个函数会对输入的两个数字进行相加运算..."
		echo "输入第一个数字: "
		read aNum
		echo "输入第二个数字: "
		read anotherNum
		echo "两个数字分别为 $aNum 和 $anotherNum !"
		return $(($aNum+$anotherNum))
}
funWithReturn
echo "输入的两个数字之和为 $? !"
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值