Shell脚本语法

简介

虽然shell脚本语法不难,难的是各项指令,但是还是记录下常规的命令。

shell符号,内置命令速记

  • 符号
() : 在子shell执行命令	(ls)
(()):可以进行数值比较		((1<2))
$()与``:应用替换			touch $(date +%F)_file.txt
$(()):数值运算			$((1+2))
${
   }:变量的引用
[]:条件测试	-a 与条件 -o 或条件
[[ =~ ]]: 正则匹配	&&与条件 ||或条件
$[]:整数运算   $[2**10] 210次方
  • 内置命令
: 返回真与true同效
wait 			内部变量,等待前面所有后台进程结束
########
OLD_IFS=$IFS
IFS=$'\n'		内部变量,重新定义分隔符
IFS=$OLD_IFS	恢复之前的换行符
########
sleep 1			内部关键词,睡眠1s
exit 			程序退出
echo -n 		不换行打印
continue 		和c语言类似,不过后面跟数字可以跳过多次循环
break			和C语言类似,不过后面跟数字可以跳出多层循环
shift 			将位置参数向左移动,可以跟数字
#!/usr/bin/bash
while [ $# -ne 0 ]
do
	let sum+=$1
	#将外界的位置参数左移一位,舍去最左边的那个
	shift 1
done
echo "sum: $sum"

调试语法

sh -n xx.sh			仅调试syntax error
sh -vx xx.sh		以调试的方式执行,查询整个执行过程
time xx.sh			计算脚本运行的时间

命令的排序

#!/usr/bin/bash
ping -c1 www.baidu.com && echo "www.baidu.com is up" || echo "www.baidu.com is down"

&& 和 || 的语法其实和C语言差不多,在C语言中&&前一项正确会执行后面一项,如果&&前面一项错误就不会执行后面的,||是前面正确就不执行后面的,否则会执行后面的,所以上面语句可以以||为分界线话为两部分。
ping -c1 www.baidu.com 成功就会执行echo “www.baidu.com is up”,这个必然成功,所以echo "www.baidu.com is down"不会输出。
ping -c1 www.baidu.com 成功则"www.baidu.com is up"不执行,会执行echo “www.baidu.com is down”

重定向输出

当文件描述符(0,1,2)与重定向符号(<)组合之后,就可以重新定向输入,输出,及错误。
*

command    2>file1 
  命令执行的错误信息保存到了file1文件中。显示屏只是显示正确的信息。
command    1>file1  2>file2 
  命令执行后,没有显示。因为正确输出到file1,错误定向到file2
command    &>file1
  命令执行后,输出和错误都定向到file1中
command    >&文件描述符
  定义“错误”输出到STDERR指定的文件
	cat test.sh
	#!/bin/bash
	echo " this is ERROR "   >&2
错误输出指定到文件file1
	[root@localhost ~]# ./test 2>file1		
	this is output
>> :追加重定向输出

shell通配符

和正则表达式差不多,但是有差别不能混为一谈

* : 匹配任意字符
? : 匹配任意一个字符
[]: 匹配括号中的惹你一个字符[abc][a-z][0-9 ][a-zA-Z0-9][^a-z](取反)
(): 在子shell中执行命令
{
   
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值