Linux Shell Scripting Cookbook 读书笔记 1
本系列文章为《Linux Shell Scripting Cookbook》的读书笔记,只记录了我觉得工作中有用,而我还不是很熟练的命令
书是很好的书,有许多命令由于我比较熟悉,可能就没有记录在其中了
1. 获得进程的环境变量
cat /proc/$PID/environ
将原先彼此间的null('\0')分隔符替换成换行
cat /proc/1194/environ | tr '\0' '\n'

2. 获得字符串长度
length=${#var}

3. 数字运算
let, (()), []执行基本的算数操作,高级操作使用expr,bc
let no1++
let no1-=6
result=$[ no1 + no2 ]
result=$[ $no1 + 5 ]
result=$(( no1 + 50 ))
4. 调试脚本
#!/bin/bash
function DEBUG()
{
[ "$_DEBUG" == "on" ] && $@ || :
}
echo this is test file
for i in {1..6}
do
DEBUG echo $i
done

Bash中 : 告诉shell不要进行任何操作
$@ 表示所有脚本参数的内容
5. 字段分隔符IFS (Internal Field Separator)
#!/bin/bash
passwd=$(cat /etc/passwd)
oldIFS=$IFS;
IFS=$'\n'
for line in $passwd;
do
IFS=":"
count=0
for item in $line;
do
[ $count -eq 0 ] && user=$item;
[ $count -eq 6 ] && shell=$item && echo $user\'s shell is $shell;
let count++
done;
done;
IFS=$oldIFS
第一个IFS的赋值为$'\n',为了第一个for循环按行获得passwd里面的值
第二个IFS赋值为":",为了按:为分隔,取得每个段的值

其中for循环的主体部分,[]的使用可以作为简洁版的判断语句
6. 比较与测试
[ $var1 -ne 0 -a $var2 -gt 2 ] #逻辑与 -a,逻辑或-o
使用&& 以及 || 也可以组合条件
if [[ -n $str1 ]] && [[ -z $str2 ]]; then ...
使用test命令也可以执行条件检测,可以避免使用过多的括号,多个条件使用-a/-o连接
test命令也有更广泛的文件系统相关测试选项,具体查看man test
#!/bin/bash
no1=1
no2=0
test $no1 -eq 1 -a $no2 -gt 1 && echo success || echo fail
文件系统相关测试
[ -f $file_var ] 文件路径或文件名
[ -x $var ] 文件可执行
[ -d $var ] 目录
[ -w $var ] 可写
[ -r $var ] 可读
[ -L $var ] 符号链接
[ -e $var ] 如果给定的变量包含的文件存在,则返回真
例如
#!/bin/bash
fpath=/etc/passwd
[ -e $fpath ] && echo file exist || echo file not exist
字符串的比较最好使用双中括号
[[ -z $str ]] 空串返回真
[[ -n $str ]] 非空串返回真
Linux Shell Scripting Cookbook 读书笔记 1的更多相关文章
- Linux Shell Scripting Cookbook 读书笔记 2
cat,script,find, xargs, tr, tmp文件,字符串截取,批量文件重命名,固定大小文件,自动化交互 1. cat的用法 压缩连续的空白行 cat -s file 也可以用tr,将 ...
- Linux Shell Scripting Cookbook 读书笔记 7
ping, du, ps, kill, 收集系统信息 判断网络中哪些主机是活动主机 #!/bin/bash for ip in 10.215.70.{1..255}; do ( ping $ip -c ...
- Linux Shell Scripting Cookbook 读书笔记 6
wget,curl, tar, rsync wget ftp://example.com/somefile.img -t 5 -O download.img -o log -t表示重试的次数 -O指定 ...
- Linux Shell Scripting Cookbook 读书笔记 5
sed,awk 1. sed (string editor) 使用-i可以将结果运用于原文件 sed 's/text1/text2/' file > newfile mv newfile fil ...
- Linux Shell Scripting Cookbook 读书笔记 4
正则, grep 1. 正则表达式 正则表达式 描述 示例 ^ 行起始标记 ^hell匹配以hell开头的行 $ 行尾标记 test$匹配以test结尾的行 . 匹配任意一个字符 hell ...
- Linux Shell Scripting Cookbook 读书笔记 3
patch, tree, head ,tail 1. 创建不可修改文件 chattr +i file chattr -i file 移除不可修改属性 2. 能够启动闪存或硬盘的混合ISO isohyb ...
- 《The Linux Command Line》 读书笔记02 关于命令的命令
<The Linux Command Line> 读书笔记02 关于命令的命令 命令的四种类型 type type—Indicate how a command name is inter ...
- 《The Linux Command Line》 读书笔记01 基本命令介绍
<The Linux Command Line> 读书笔记01 基本命令介绍 1. What is the Shell? The Shell is a program that takes ...
- 《Linux内核分析》读书笔记(四章)
<Linux内核分析>读书笔记(四章) 标签(空格分隔): 20135328陈都 第四章 进程调度 调度程序负责决定将哪个进程投入运行,何时运行以及运行多长时间,进程调度程序可看做在可运行 ...
随机推荐
- PHP CURL的几种用法
1.抓取无访问控制文件 <?php $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, "http://localhost/mytest/ ...
- 【原创】你知道Oracle 10G能存多少数据吗
昨天晚上在看Oracle 10G联机文档中关于bigfile tablespaces的描述(引用1),发现了关于Oracle存储极限的简单描述.bigfile tablespaces的存在,让Orac ...
- I2C controller core之Bit controller(02)
4 generate clock and control signals 1 -- architecture signal iscl_oen, isda_oen : std_logic; -- int ...
- dubbo之只订阅及只注册
只订阅 问题 如果有两个镜像环境,两个注册中心,有一个服务只在其中一个注册中心有部署,另一个注册中心还没来得及部署,而两个注册中心的其它应用都需要依赖此服务,所以需要将服务同时注册到两个注册中心,但却 ...
- 如何安全使用dispatch_sync
概述 iOS开发者在与线程打交道的方式中,使用最多的应该就是GCD框架了,没有之一.GCD将繁琐的线程抽象为了一个个队列,让开发者极易理解和使用.但其实队列的底层,依然是利用线程实现的,同样会有死锁的 ...
- Spring+SprinMVC配置学习总结
一千个人有一千种spring的配置方式,真是这样.看了好多的配置,试验了很多.这里做一个总结. 1 原理上,spring和springmvc可以合并为一个配置文件然后在web.xml中加载,因为最终的 ...
- appium的等待
在自动化过程中,元素出现受网络环境,设备性能等多种因素影响.因此元素加载的时间可能不一致,从而会导致元素无法定位超时报错,但是实际上元素是正常加载了的,只是出现时间晚一点而已.那么如何解决这个问题呢? ...
- 多文件编程(day13)
多文件编程时一个文件里可以包含多个函数, 一个函数只能属于一个文件 多文件编程的步骤 .把所有函数分散在多个不同的源文件里 (主函数通常单独占一个文件) .为每个源文件编写一个配对的以.h作为 扩展名 ...
- 《奋斗吧!菜鸟》 第八次作业:Alpha冲刺 Scrum meeting 4
项目 内容 这个作业属于哪个课程 任课教师链接 作业要求 https://www.cnblogs.com/nwnu-daizh/p/11012922.html 团队名称 奋斗吧!菜鸟 作业学习目标 A ...
- 搜索引擎seo优化
<a href="" title="SEO优化"></a> <img src="" alt="SEO ...