shell脚本简单总结

1.shell脚本的执行

1.给脚本赋予执行权限后,./xxx.sh

2. . xxx.sh

3. source xxx.sh

2.shell变量

1.环境变量

	printenv 显示当前shell进程下的环境变量


2.本地变量

	设置本地变量 VAR=10 VAR1="hello"
	使用本地变量 $VAR  $VAR1
	本地变量变成环境变量   export VAR=10
	取消本地变量 unset VAR

set 查看shell进程的本地变量和环境变量

没有定义的变量取值是空字符串

3.shell代换

3.1文件名代换
* 匹配0个或多个  ls a*
? 匹配一个		ls a?
[]列表中的任意一个字符的一次匹配 ls a[123]   ls a[1-3]

匹配的文件名是由shell展开的,还没有传给程序之前,已经展开了,传递的是文件名,不是字符串
3.2命令代换
1. `命令`,如 DATE=`date`
2. $(命令),如 DATE=$(date)
3.3 算术代换
1. $(()),如 VAR=10,$(($VAR+1)),输出11

2. $[],如 VAR=10,$[VAR+1](或者 $[$VAR+1] ),输出11

	$[base#n],以多少进制输出,如 $[2#10+11]代表2进制的10加上10进制的11


3.4转义代换
输出原意字符
echo \$VAR,输出$VAR

echo \\,输出\

1. 如创建一个文件,名字为$ $
	 touch \$\ \$

特殊:-

2.如创建一个文件,名字为 -hello

	touch -- -hello.  OR    touch ./-hello


3. \ 还有续行的含义

4.单引号和双引号

1.''   保持引号内字符的字面值

	如: echo '$VAR' ,out: $VAR

	    echo  'abc\(enter)de',out: abc\(enter)de
	  
2."" 被视为单一字符串,允许变量扩展

	如:
		DATE=$(date)
		echo "DATE" ,out:输出时间
		echo 'DATE' ,out:输出 DATE 字面值

5.条件测试

1.  test

	eg: var=2
		test $var -gt 1
		echo $?  (查看上一个进程的返回值,0为真,1位假)

2. []

	eg: 
		[$var -gt 1]
	
	
3.
	-d 文件
	-f 普通文件
	-z string string长度为0,则为真
	-n string string长度非0为真
	=  相同为真
	!= 不同为真

	ARG1 OP ARG2:
		OP:
			-eq 等于
			-ne 不等于
			-lt 小于
			-gt 大于
			-ge 大于等于
			-le 小于等于
		
	! 非
	-a 与
	-o 或

		

6.分支

if [ condition1 ];then
	cmd1
elif [ condition2 ];then
	cmd2
else
	cmd3
fi


-----------------------------------------------------------------------------------

case "$VAR" in
condition1)
	cmd1;;
conition2)
	cmd2;;(多条命令,最后一条命令加;;)
esac

7.循环

for VAR in list;do
	cmd
done

-----------------------------------------------------------------------------------
while [ conition1 ];do
	cmd
done


break[n]可以指定跳出几层循环;continue跳过本次循环,但不会跳出循环

8.位置参数和特殊变量

$0 -->argv[0]
$1,$2...  --->位置参数, argv[1],argv[2]...
$# ---> argc-1
$@ ---> 参数列表
$* ---> 参数列表
$? ---> 上一条命令的退出值
$$ ---> 当前进程号

9.echo

显示文本或者变量,把字符串输入到文件

-e 解析转义字符
-n 不回车换行,默认后面跟一个回车换行

10.管道

| 把前面命令的输出做为后面命令的输入

cat myfile | more 

ls -l | grep "myfile"

df -k | awk `{print $1}`

11.文件重定向

cmd > file 把标准输出重定向到新文件中
cmd >> file 追加

cmd > file 2>&1 标准出错也重新定向到1所指的file中   所有的东西都进入文件file
cmd >> file 2>&1

cmd < file1 > file2 从file1读,写到file2中

cmd < &fd 把文件描述符fd作为标准输入,从文件中读
cmd > &fd  把文件描述符fd作为标准输出,输入到文件

cmd < &- 关闭标准输入


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值