Notes8变量,别名,重定向,/until,shift,函数,/test,运算,流程控制
Posted 码农编程录
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Notes8变量,别名,重定向,/until,shift,函数,/test,运算,流程控制相关的知识,希望对你有一定的参考价值。
文章目录
- 1.变量:Shell是一个用C语言编写的程序,它是用户使用Linux的桥梁,硬件>内核>shell>文件系统
- 2.设置与别名,printf,重定向,exit,until,shift:set指令能设置所使用shell的执行方式
- 3.declare与let:let命令和双小括号 (( )) 的用法是类似的,它们都是用来对整数进行运算,不能对小数(浮点数)或字符串进行运算
- 4.函数与传参:shell脚本传递的参数中包含空格,应使用单引号或双引号将该参数括起来,以便于脚本将这个参数作为整体来接收。if [ -n str1 ] 当串的长度大于0时为真(串非空)
- 5.test:用于检查某个条件是否成立,它可以进行数值、字符和文件三个方面的测试
- 6.运算:算术、关系、布尔、逻辑、字符串、文件运算
- 7.流程控制:if、for、while、case
1.变量:Shell是一个用C语言编写的程序,它是用户使用Linux的桥梁,硬件>内核>shell>文件系统
定义变量修饰词:readonly
定义只读变量,unset
删除变量。
如果字符串中有空格,必须需要使用引号(str=hello world会报错)。
获取字符串长度:echo $#str
,expr length “$str”
。
截取字符串:echo $str:1:4
:显示字符串第1到第4个字符。
echo $str:4
:从左边第4个字符开始,一直到结束。
echo $str:0-6:3
:从倒数第6个字符开始的3个字符。
echo $str:0-6
:从倒数第6个字符开始,一直到结束。
file=/dir1/dir2/dir3/my.file.txt
$file#*/:删掉第一个 / 及其左边的字符串:dir1/dir2/dir3/my.file.txt / 可换成 . 即#*.
$file##*/:删掉最后一个 / 及其左边的字符串:my.file.txt
$file%/*:删掉最后一个 / 及其右边的字符串:/dir1/dir2/dir3
$file%%/*:删掉第一个 / 及其右边的字符串:(空值)
2.设置与别名,printf,重定向,exit,until,shift:set指令能设置所使用shell的执行方式
不添加引号,转义将不被执行,如下转义。
echo中>
覆盖输出。>>
输出到文件末尾。
command > /dev/null 2>&1
不在屏幕上显示输出结果和错误。/dev/null 是一个特殊文件,写入到它的内容都会被丢弃,从该文件读取内容,什么也读不到,起到"禁止输出下面文字"的效果。
# shift.sh
until [ $# -eq 0 ]
do
echo "第一个参数为: $1 参数个数为: $#"
shift
done
$./shift.sh 1 2 3 4
结果显示:第一个参数为: 1 参数个数为: 4
第一个参数为: 2 参数个数为: 3
第一个参数为: 3 参数个数为: 2
第一个参数为: 4 参数个数为: 1
# shift1.sh
sum=0
until [ $# -eq 0 ]
do
sum=`expr $sum + $1`
shift
done
echo "sum is: $sum"
$./shift1.sh 10 20 15
结果显示:45
3.declare与let:let命令和双小括号 (( )) 的用法是类似的,它们都是用来对整数进行运算,不能对小数(浮点数)或字符串进行运算
4.函数与传参:shell脚本传递的参数中包含空格,应使用单引号或双引号将该参数括起来,以便于脚本将这个参数作为整体来接收。if [ -n str1 ] 当串的长度大于0时为真(串非空)
5.test:用于检查某个条件是否成立,它可以进行数值、字符和文件三个方面的测试
6.运算:算术、关系、布尔、逻辑、字符串、文件运算
算术:
关系:
布尔:
逻辑:
文件测试运算:
7.流程控制:if、for、while、case
if:
for:
while:
until:
case:
break与continue:
以上是关于Notes8变量,别名,重定向,/until,shift,函数,/test,运算,流程控制的主要内容,如果未能解决你的问题,请参考以下文章
shell介绍命令历史 命令补全和别名 通配符输入输出重定向