文件描述符及重定向

echo "This is a sample text 1" > temp.txt
# 文本重定向,截断文件的方式
# 意思是在把echo命令的输出写入文件前,temp.txt文件会被清空
cat temp.txt
echo "----"
echo "This is a sample text 2" >> temp.txt
# 追加文件方式
cat temp.txt
This is a sample text 1
----
This is a sample text 1
This is a sample text 2

错误信息输出

成功和不成功的命令

当一个命令发生错误并退回时,它会返回一个非0的退出状态

退出状态怎么看?

echo $?就可以打印出退出状态

# 会将stderr文本打印到屏幕上,而不是文件,因为没有
ls + > out.txt # stderr转换成stdout,使得stderr和stdout都被重定向到同一个文件中
ls + >output.txt 2>&1
# tee追加方式写入
cat out.txt | tee -a out.txt | cat -n

bash

函数和参数

以两种方式实现fabonacii数列为例

#!/bin/bash

#递归方式实现斐波那契数列
function fib()
{
var=$1
if [[ $var = 1 || $var = 2 ]]; then
var=1
elif [[ $var -lt 1 ]]; then
return
else
var=`echo "$(fib $(( $var-2 ))) + $(fib $(( $var-1 )))" | bc `
fi
echo $var
return $?
} #递推方式实现斐波那契数列
function fib2()
{
array_list=(0 1 1)
var=$1
if [[ $var -lt 1 ]]; then
return
fi
for((i=3;i<=$var;i++));do
array_list[$i]=`echo "${array_list[$(($i-1))]} + ${array_list[$(($i-2))]}" | bc `
done
echo ${array_list[$var]}
return $?
}
n=$1
result=$(fib $n)
echo $result result=$(fib2 $n)
echo $result

迭代器

#!/bin/bash

# 三种循环方式
function loop()
{
for((i=0;i<10;i++)){
echo $i
}
count=0
while [[ $count -ne 10 ]]; do
# count=`echo "$count + 1" | bc`
let count++
echo $count
done count=0
until [ $count -eq 10 ]; do
let count++
echo $count
done } loop

算术比较

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

文件系统相关测试

p39

-f      是否是文件
-x 是否是可执行
-d 是否是目录
-e 是否存在
-c 是否是字符设备文件
-b 是否是块设备文件
-w 是否是可写文件
-r 是否是可读文件
-L 是否是符号链接 e.g.
#!/bin/bash

function sys_test()
{
# 文件存在
fpath="/etc/passwd"
[ -e $fpath ] && echo "file exist" # 文件不存在
fpath='/qwdwq/qwdwqd'
[ -e $fpath ] || echo "file not exist" } sys_test

字符串进行比较

#!/bin/bash

function str_cmp()
{
str1=$1
str2=$2
if [ -z $str1 ] || [ -z $str2 ];then
echo "empty"
return 1
fi
if [[ $str1 > $str2 ]];then
echo "$str1 is bigger then $str2"
elif [[ $str1 < $str2 ]];then
echo "$str2 is bigger then $str1"
elif [[ $str1 == $str2 ]]; then
echo "$str1 equels to $str2"
fi
return 0
} str_cmp $1 $2

《Linux shell 脚本攻略》第1章——读书笔记的更多相关文章

  1. Linux Shell脚本攻略

    -Linux Shell脚本攻略 总结的来说,这本书很实践性和实用性强,都是给的具体的例子,直接可以在终端操作实践,比单纯只看不动手务实多了,另外就是,这本书涵盖的内容也比较广,从文本操作到服务器管理 ...

  2. 老李分享:《Linux Shell脚本攻略》 要点(一)

    老李分享:<Linux Shell脚本攻略> 要点(一)   第一章:Shell起步基础 1.变量:在bash中,每一个变量的值都是字符串.无论你给变量赋值时,有没有使用引号,值都会以字符 ...

  3. 读《Linux Shell脚本攻略》(第2版) 总结

    前段时间读完了<Linux Shell脚本攻略>(第2版)这本书,给部分想读这本书的人分享下个人感受. 说下这本书的难度吧.纯新手或者只懂少部分编程知识的人,读起来还是有很大难度的.以我为 ...

  4. 读《Linux Shell脚本攻略》(第2版) 一遍、二遍体会

    前段时间读完了<Linux Shell脚本攻略>(第2版)这本书,给部分想读这本书的人分享下个人感受. 第一遍体会解读:就像黑夜中的灯塔,指明前进的道路. 推荐指数:强烈推荐. 书中讲解的 ...

  5. linux shell 脚本攻略学习20--awk命令入门详解

    awk生于1977年,创始人有三个,分别为 Alfred Aho,Peter Weinberger, 和 Brian Kernighan,名称源于三个创始人的姓的首字母. 作用:处理文本文件. awk ...

  6. 读书笔记--Linux Shell脚本攻略

    总结的来说,这本书很实践性和实用性强,都是给的具体的例子,直接可以在终端操作实践,比单纯只看不动手务实多了,另外就是,这本书涵盖的内容也比较广,从文本操作到服务器管理到远程ssh等等,都给出来作者挑选 ...

  7. Linux Shell脚本攻略 读书笔记

    Linux Shell脚本攻略 读书笔记 这是一本小书,总共253页,但内容却很丰富,书中的示例小巧而实用,对我这样总是在shell门前徘徊的人来说真是如获至宝:最有价值的当属文本处理,对这块我单独整 ...

  8. Linux shell 脚本攻略之统计文件的行数、单词数和字符数

    摘自:<Linux shell 脚本攻略>

  9. Linux shell 脚本攻略之创建不可修改文件

    摘自:<Linux shell 脚本攻略>

  10. Linux shell 脚本攻略之生成任意大小的文件

    摘自:<Linux shell 脚本攻略>

随机推荐

  1. getRawType:获取数据类型,返回结果为 Number、String、Object、Array等

    function getRawType(value) { return Object.prototype.toString.call(value).slice(8, -1)}//getoRawType ...

  2. .NET 9 发布 性能提升、AI 支持与全方位改进

    前言 .NET 9 正式发布,这是迄今为止最高效.现代.安全.智能且高性能的 .NET 版本. 新版本凝聚了全球数千名开发者的共同努力,包含了数千项性能.安全性和功能性改进. 主要亮点 性能提升:全面 ...

  3. 解密prompt系列43. LLM Self Critics

    前一章我们介绍了基于模型自我合成数据迭代,来提升LLM生成更合理的自我推理思考链路.但在模型持续提升的道路上,只提升Generator能力是不够的,需要同步提升Supervisor.Verifier的 ...

  4. VMware与Windows主机之间复制粘贴

    其实就是安装VMware Tools,但不知道为什么我的VMware Workstation不能安装VMware Tools,记得之前有次安装过,但是失败了. 基于apt-get命令下载安装其实是更好 ...

  5. k8s之Helm

    官方文档: https://helm.sh/zh/docs/intro/using_helm/ Helm 帮助您管理 Kubernetes 应用-- Helm Chart,Helm 是查找.分享和使用 ...

  6. Windows下搭建Linux开发环境(vagrant)

    [下载] vagrant软件:https://www.virtualbox.org/wiki/Downloads centos镜像: http://isoredirect.centos.org/cen ...

  7. Golang基础库之net/http

    Go语言内置的net/http包十分的优秀,提供了HTTP客户端和服务端的实现. net/http介绍 Go语言内置的net/http包提供了HTTP客户端和服务端的实现. HTTP协议 超文本传输协 ...

  8. 用VuePress在GitHub Pages上搭建博客

    请先点击链接RobinDevNotes,体验用VuePress搭建博客的效果(logo还没有合适的替换),目前部署在GitHub Pages上,国内访问速度还可以,再阅读本文感受来龙去脉和搭建过程. ...

  9. go 编译超时解决

    转载请注明出处: 在编译go项目时,遇到依赖下载超时,异常输出如下: CGO_ENABLED=0 GOOS=linux GO111MODULE=on go build -a -ldflags '-ex ...

  10. .Net知识技能大全

    .Net知识技能大全 更多请见https://www.dotnetshare.com C#常见运算符 一元运算符(+.-.!.~.++.--) 算术运算符(*./.%.+. – ) 移位运算符(< ...