linux shell读书笔记

调试脚本

使用-x,启动跟踪调试shell脚本:
bash -x script.sh //sh -x script.sh
运行带有 -x标志的脚本能够打印出所执行的每一行命令以及当前状态。
-x标识将脚本中执行过的每一行都输出到stdout。不过,我们也可以要求只关注脚本某些部分的命令及参数的打印输出
针对这种情况,可以在脚本中使用set built -in 来启动或禁止调试打印
set -x:在执行时显示参数和命令
set +x:禁止调试
set -v:当命令进行读取时显示输入
set +v:禁止打印输入

在每一个需要打印调试信息的语句前加上DEBUG。如果没有把_DEBUG=on传递给脚本,那么调试信息就不会打印出来。
命令‘:’告诉shell不要进行任何操作

shebang的妙用
把shebang从#!/bin/bash改成#!/bin/bash -xv 这样一来,不用任何其他选项就可以启用调试功能了

有很多方法可以给命令分组。
1、利用子shell生成一个独立的进程。可以利用()操作符来定义一个子shell;
pwd
(cd /bin; ls)
pwd
当命令在子shell中执行时,不会对当前shell有任何影响;所有的改变仅限于子shell内。
例如当用cd命令改变子shell的当前目录时,这种变化不会反映到主shell环境中
pwd命令打印出工作目录的路径。
cd命令将当前目录更改为给定的目录路径

2、通过引用子shell的方式保留空格和换行符
假设我们使用子shell或反引用的方法将命令的输出读入一个变量中,可以将它放入双引号中,以保留空格和换行符(/n)

for循环

for var in list
do
commands #使用变量$var
done
list can be a string, or a sequence

while循环
while condition
do
commands
done
用true作为循环条件能够产生无限循环

until循环
在Bash中还可以使用一个特殊的循环until。它会一直循环直到给定的条件为真。例如:
x=0;
until [ xeq9]doletx++echo x
done

[ condition ] && action #如果condition为真,则执行action
[ condition ] || action #如果condition为假,则执行action

可以按照下面的方法结合多个条件进行测试
[ var1ne0a var2 -gt 2 ] #使用逻辑与-a
[ var1ne0o var2 -gt 2 ] #使用逻辑或-o

使用字符串比较时,最好使用双中括号,因为有时候采用单个中括号会产生错误,所以最好避开他们

用cat进行拼接
cat通常用于读取、显示或拼接文件内容

用cat读取文件内容的一般写法是:
cat file1 file2 file3 ..

cat命令不仅可以读取并拼接数据,它还能从标准输入中进行读取
要从标准输入中读取,就要使用管道操作符

我们可以使用cat将输入文件的内容与标准输入拼接在一起。方法如下:
echo ‘text through stdin’ | cat - file.txt
在上面的代码中,-被作为来自stdin文本的文件名

在filestat.sh 中
done<<(find $path -type f -print) 是一段很重要的代码。他的执行逻辑如下:
while read line
do something
done

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值