shell-bash学习02运算、拼接、重定向
运算
let操作
- 可以直接执行基本的算术操作;使用时,变量名之前不需要再添加
$;
#!/bin/bash
no1=4;
no2=5;
let result=no1+no2
echo $result
- 自增自减操作:
let no1++ / ++no1;
let no1-- / --no1;
//
let no+=6
let no-=6
[]操作
- 使用方法和
let命令类似;
#!/bin/bash
no1=4;
no2=5;
result=$[no1+no2]
echo $result
- 在
[]中也可以使用$前缀;效果与不使用相同; - 也可以使用
(()),但使用(())时,变量名之前需要加上$;
result=$(( no1 + 50 ))
使用expr操作
result=`expr 3 + 4`
result=$(expr $no1 + 5)
注意,以上这些方法只能用于整数运算,而不支持浮点数;
使用bc
- 一个用于数学运算的高级工具,可以借助它执行浮点数运算并应用一些高级函数;
- 可能需要安装:
apt-get install bc
echo "4 * 0.56" | bc
2.24
//
no=54;
result=`echo "$no * 1.5" | bc`
echo $result
81.0
- 设定小数精度
echo "scale=2;3/8" | bc
0.37
- 进制转换
#!/bin/bash
#十进制转二进展然后二进行转十进制;
no=100
echo "obase=2;$no" | bc
1100100
no=1100100
echo "obase=10;ibase=2;$no" | bc
100
- 计算平方以及平方根
echo "sqrt(100)" | bc #Square root
echo "10^10" | bc #Square
数组和关联数组
定义一般数组
#这些值将会存储在以0为起始索引的连续位置上
array_var=(1 2 3 4 5 6)
#将数组定义成一组“索引-值”:
array_var[0]="test1"
array_var[1]="test2"
array_var[2]="test3"
定义关联数组
- 可以用任意的文本作为数组索引;
//声明
declare -A ass_array
//添加
ass_array=([index1]=val1 [index2]=val2)
ass_array[index1]=val1
ass_array[index2]=val2
打印数组
- 打印值
echo ${array_var[0]}
//
index=5
echo ${array_var[$index]}
//打印所有值
echo ${array_var[*]}
echo ${array_var[@]}
- 打印长度
echo ${#array_var[*]}
echo ${#array_var[@]}
- 打印索引
echo ${!array_var[*]}
echo ${!fruits_value[*]}
cat进行拼接
常用作用
- 用于读取、显示或拼接文件内容
cat file1 file2 file3 ...
//使用管道操作符: OUTPUT_FROM_SOME COMMANDS | cat
echo 'Text through stdin' | cat - file1 file2..
- 输出时增加行号:
//保留空白输出输出
cat -n file
//过滤空白行输出
cat -b file
- 过滤多余空白行:
cat -s file; - 将制表符显示为
^|- 制表符(TAB)的功能是在不使用表格的情况下在垂直方向按列对齐文本;
- 对于缩进有要求的语言若在应该使用空格的地方误用了制表符的话,就会产生缩进错误;
- 该特性对排除缩进错误非常有用;
文件描述符及重定向
文件描述符
- 与文件输入、输出相关联的整数;用来跟踪已打开的文件;
stdin: 0,stdout: 1,stderr: 2`
处理输出文本
> = 1>; >> = 1>>
//将输出文本重定向或保存到一个文件中
echo "This is a sample text 1" > temp.txt
//将文本追加到目标文件中
echo "This is sample text 2" >> temp.txt
输出结果重定向
echo $?;可以打印退出的状态;
ls 1> out.txt
ls + 2> out.txt
链式:
cmd 2>stderr.txt 1>stdout.txt重定向到同一个文件
//将stderr转换成stdout,使得stderr和stdout都被重定向到同一个文件中:
cmd 2>&1 output.txt
cmd &> output.txt
过滤输出的stderr信息;
- 处理错误时,可以将
stderr的输出重定向到/dev/null;它是一个特殊的设备文件,接收到的任何数据都会被丢弃;
使用tee:
- 既可以将数据重定向到文件,还可以提供一份重定向数据的副本作为后续命令的
stdin
cat a* | tee out.txt | cat -n
- 追加
cat a* | tee -a out.txt | cat -n
使用stdin作为命令参数
//只需要将-作为命令的文件名参数即可
cmd1 | cmd2 | cmd -
shell-bash学习02运算、拼接、重定向的更多相关文章
- Shell脚本学习 - 函数,输入输出重定向,文件
函数 函数定义 [ function ] funname [()] { action; [return int;] } 定义时可以是function fun(),也可以直接fun(),不带参数 返回值 ...
- 【Shell脚本学习指南笔记】重定向文件描述符 2>&1
如: make > results 2>&1 重定向 > results让文件描述符1(标准输出)作为文件results,接下来的重定向2>&1有两个部分.2& ...
- [Shell]Bash基本功能:输入输出重定向
/*----------------------------------------------------------------------------------------------- @黑 ...
- Linux之bash shell的学习
1.什么是bash shell bash 是Bourne Again Shell的简称,是从unix系统中的sh发展而来,是用户和偶Linux内核交互的工具,用户通过bash操作内核完成系统的使用和 ...
- Shell编程学习之重定向
这一篇讲一下重定向 有些时候你想要保存某些命令产生的输出而不是在显示器上显示它. 为了应对这样的问题 bash shell 也就提供了一些重定向的操作符. 我们先了解一些基本的应用. 输出重定向 输出 ...
- shell语法学习
[原文] 菜鸟笔记shell教程学习. 本篇博客只是记录shell的一些关键语法,主要是做一个记录,有些内容也是copy过来的,并不是一个完整的教程,想完整学习shell的同学可以前往 shell脚本 ...
- Linux shell 菜鸟学习笔记....
20171123 Linux shell 基础学习笔记1. shell 的开始 一般是 #!/bin/bash 通过 #! 来唯一指定使用的shell路径 其他的 # 都表示注释.2. shell 的 ...
- Shell脚本学习指南笔记
Shell脚本学习指南 作者:Danbo 2015-8-3 脚本编程语言与编译型语言的差异 许多中型.大型的程序都是用编译型语言写的,例如:C.C+.Java等.这类程序只要从源代码(Source C ...
- linux shell & bash
shell & bash shell指允许用户通过文本操作计算机的程序. interactive shell:从是否通过标准输入输出与用户进行交互的角度分为交互式shell(interacti ...
随机推荐
- CSS3实现圆角效果
利用border-radius属性可以给元素div,input元素等添加圆角效果 后跟 值为这个圆角的半径,即数值越大效果越明显 -webkit-border-top/bottom-left/righ ...
- 【leetcode】Count Primes(easy)
Count the number of prime numbers less than a non-negative number, n 思路:数质数的个数 开始写了个蛮力的,存储已有质数,判断新数字 ...
- 【XLL API 函数】xlCoerce
将 XLOPER/XLOPER12 转换为另一种类型,或是查询表格中的单元格值. 函数原型 Excel12(xlCoerce, LPXLOPER12 pxRes, 2, LPXLOPER12 pxSo ...
- 更新补丁Bind
1.查询补丁版本信息 (1) rpm -qa|grep bind (2) dig @localhost version.bind 2.下载安装 BIND最新漏洞和升级解决办法 现在有非常多的公司的都有 ...
- IOS-多线程技术
三种: •NSThread: –优点:NSThread 比其他两个轻量级,使用简单 –缺点:需要自己管理线程的生命周期.线程同步.加锁.睡眠以及唤醒等.线程同步对数据的加锁会有一定的系统开销 •NSO ...
- Excel统计工作簿sheet个数
按Alt+F11调出VBE后,在"视图"-“立即窗口”中输入: debug.print ThisWorkbook.Sheets.Count 回车后就可看到工作表数量.
- SQL Server output经典使用
output经典使用 分类: sql2012-02-16 18:17 409人阅读 评论(0) 收藏 举报 outputinserttabledeletegonull OUTPUT是SQL SERVE ...
- [Android Pro] 将你的安卓手机屏幕共享到PC或Mac上
有时候为了方便演示一个手机app,需要把手机屏幕显示到PC或Mac上.这里提供一个方法 — 使用Vysor达到此功能. Vysor的吸引力在于3个方面: 它适用于Windows.Linux或Mac. ...
- 有关Java的优秀博客集锦
1. 在java编程中,多线程并发总有些疑惑:如为什么会产生并发?并发会有什么影响?java中提供了哪些处理并发的技术(机制) 关于并发产生的原因,我查了一些资料目前发现有两种原因:一,存在共享的资源 ...
- poj1611(并查集)
题目链接:http://poj.org/problem?id=1611 题意: SARS(非典型肺炎)传播得非常厉害,其中最有效的办法是隔离那些患病.和患病者接触的人.现在有几个学习小组,每小组有几个 ...