小试牛刀chapter01

一,打印输出

   1,再echo 中转义换行符

echo - e "1\t2\t3"

 2 打印彩色输出

echo -e "\e[1;31m This is red text \e[0m"

要设置彩色背景,经常使用的颜色色吗是:重置 =0,黑色 = 40,红色 = 41,绿色 =42 ,黄色 = 43 ,洋色 = 35 ,青色 = 36 ,白色 =47

3,printf 

 printf "%-5s %-10s %-4.2f\n" 1 sarath 80.323
 打印结果

 1     sarath     80.32
  %-5  指明了一个格式为左对齐且宽度为5的字符串替换(-表示左对齐)。如果不用,字符串则采用右对齐形式。  .2 指定保留2个小数位。

 二,玩转变量和环境

 假设firefox 开启中,使用命令pgrep firefox  查询PID

 

cat /proc/12501/environ
使用上述命令获取与该进程相关的环境变量。每一个变量以name=value 的形式来描述,彼此之间由null 字符串(\0)分隔。如果你将\0 替换成\n ,那么就可以将输入重新格式化,使得每一行显示一组 “变量=值”。替换命令可以使用tr 命令来实现

 cat /proc/3223/environ | tr '\o' '\n'

4,变量赋值

var=value

注意的是:var = value 不同于 var=value  前者是赋值,后者是相等操作。

在变量之前加上$ 可以打印出变量的内容

var="value"

echo $var

或者 

echo ${var}

也可在printf 或 echo 命令的双引号中引用变量值

fruit=apple
count=5
echo "we have $count ${fruit}"

5,添加环境变量

HTTP_PROXY=192.168.23.3128
export HTTP_PROXY

export 命令用来设置环境变量。

6,补充内容

>获取字符串长度

var=123458
echo $(#var)
</pre><pre code_snippet_id="1964172" snippet_file_name="blog_20161107_8_1284788" name="code" class="php">
<pre name="code" class="php">#!/bin/bash
var=123456
length=${#var}
echo $length


 

>识别当前使用的shell

echo $SHELL


7,检查是否为超级用户

UID是一个重要的环境变量,可以用于检查当前脚本是以超级用户还是普通用户的身份运行的。

root用户的UID是0;


8,数学运算

 在bash shell环境中,可以利用let,(()) 和 [] 执行基本的算术操作。而在进行高级操作时,expr 和 br这两个工具也非常有用。

>let 命令可以直接执行基本的算术操作。当使用let时,变量名之前不需要再添加$

#!/bin/bash
no1=4
no2=5
let result=no1+no2
echo $result;


操作符[]的使用方法和let命令类似

result=$[no1+no2]

在[]中也可以使用$前缀

result=$[ $no1+5]

也可以使用(())

result=$((no1+50))

bc 是一个用户数据运算的高级工具。


9,文件描述符以及重定向

  文件描述符是与某个打开的文件或数据流相关的整数。文件描述符0,1,2是系统预留的。

就输出重定向而言>和>> 不相同。前者先清空,后者追加。

>将文件重定向到命令

借助重定向,我们可以像使用stdin那样从文件中读取数据

$cmd < file

command << delimiter  从标准输出中读入,直至遇到delimiter分界符

 向log文件中写入头部数据。可以按照下面的方法完成

#!/bin/bash
cat<<EOF>log.txt
log file header
EOF


自定义文件描述符 读取

exec 3<input.txt

cat<&3

自定义文件描述符写入

exec 4>output.txt

echo newline >&4

追加

exec 5>>input.txt

实例:在脚本中生成延时

以循环的方式运行监视脚本。 使用tput 和sleep 从0开始计数到40

tput sc 存储光标的位置

tput rc 恢复光标的位置 

tput ed 清除从当前光标位置到行尾之间的所有内容。

循环1秒钟,延时通过sleep 命令实现的。

#!/bin/bash
echo -n Count:
tput sc

count=0;
while true;
do
	if [ $count -lt 40 ];
	then
		let count++;
		sleep 1;
		tput rc
		tput ed
		echo -n $count;
	else exit 0;
	fi	
done


子shell

cmd_output=&(ls | cat -n)

echo $cmd_output

反引用

cmd_output=`COMMANDS`


子shell 本身就是独立的进场,可以使用()操作符来定义一个字shell

当命令在子shell 中执行时,不会对当前的shell 有任何影响;所有的改变仅限于shell内。







  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值