Shell脚本攻略--小试牛刀
2016-12-01 01:18
239 查看
作为用于理解Bash的基本概念及特性的入门章节,这一章讨论了终端打印,数学运算以及其他一些简单的Bash功能。
当启动shell时,它一开始会执行一组命令来定义诸如提示文本,颜色等各类设置。这组命令来自位于用户主目录中的脚本文件~/.bashrc(对于登陆shell则是~/.bash_profile)。Bash还维护了一个历史记录文件~/.bash_history,用于保存用户运行过的命令。
1,echo是一个终端打印命令,每次调用后都有一个换行符。
如果需要打印!,那就不要将其放入双引号中,或者你可以在其之前加上一个特殊的 转义字符(\)将!转义,就像这样:
$ echo Hello world ! 或者
$ echo 'Hello world !' 或者
$ echo "Hello world \!" #将转义字符放在前面
2,printf也是一个终端打印命令,不过每次调用后没有换行符。可以使用引用文本或由空格分割的参数。我们可以在printf中使用格式化字符串,还可以指 定字符串的宽度、左右对齐方式等。
#!/bin/bash
#文件名: printf.sh
printf "%-5s %-10s %-4s\n" No Name Mark
printf "%-5s %-10s %-4.2f\n" 1 Sarath 80.3456
printf "%-5s %-10s %-4.2f\n" 2 James 90.9989
printf "%-5s %-10s %-4.2f\n" 3 Jeff 77.564
我们会得到如下格式化的输出:
No Name Mark
1 Sarath 80.35
2 James 91.00
3 Jeff 77.56
原理:
%s、%c、%d和%f都是格式替换符(format substitution character),其所对应的参数可以置于 带引号的格式字符串之后。
%-5s指明了一个格式为左对齐且宽度为5的字符串替换(-表示左对齐)。如果不用-指定对 齐方式,字符串就采用右对齐形式。宽度指定了保留给某个变量的字符数。对Name而言,保留 宽度是10。因此,任何Name字段的内容都会被显示在10字符宽的保留区域内,如果内容不足10 个字符,余下的则以空格符填充。
对于浮点数,可以使用其他参数对小数部分进行舍入。
对于Mark字段,将其格式化为%-4.2f,其中.2指定保留2个小数位。注意,在每行格式字符 串后都有一个换行符(\n)。
3,echo同样接收双引号字符串内的转义序列作为参数,如果需要使用转义序列,则采用echo -e “包含转义序列的字符串” 栗子:echo -e "1\t2\t3"
4,对于进程来说,运行时的环境变量可以使用下面的命令来查看:cat /proc/$PID/environ
5,获取字符串的长度:length=${#var}
6,检查是否为超级用户:
if [ $UID -ne 0 ];then
echo Non root user.Please run as root
else
echo Root user
fi
#root用户的UID是0
7,使用shell进行数学运算
let命令可以直接执行基本的算术操作,当使用let时,变量名之前不需要添加$
栗子:let result=no1+no2
自加操作:let no1++
自减操作:let no1--
简写形式:let no1+=6
操作符[ ]的使用方法和let命令类似:
result=$[ no1+no2 ]
在[ ] 中可以使用$前缀,例如:
result=$[ $no1+5 ]
也可以使用(()),但使用(())时,变量名之前需要加上$:
result=$(( no1+5))
以上的方法只用于整数运算,不支持浮点数。
当启动shell时,它一开始会执行一组命令来定义诸如提示文本,颜色等各类设置。这组命令来自位于用户主目录中的脚本文件~/.bashrc(对于登陆shell则是~/.bash_profile)。Bash还维护了一个历史记录文件~/.bash_history,用于保存用户运行过的命令。
1,echo是一个终端打印命令,每次调用后都有一个换行符。
如果需要打印!,那就不要将其放入双引号中,或者你可以在其之前加上一个特殊的 转义字符(\)将!转义,就像这样:
$ echo Hello world ! 或者
$ echo 'Hello world !' 或者
$ echo "Hello world \!" #将转义字符放在前面
2,printf也是一个终端打印命令,不过每次调用后没有换行符。可以使用引用文本或由空格分割的参数。我们可以在printf中使用格式化字符串,还可以指 定字符串的宽度、左右对齐方式等。
#!/bin/bash
#文件名: printf.sh
printf "%-5s %-10s %-4s\n" No Name Mark
printf "%-5s %-10s %-4.2f\n" 1 Sarath 80.3456
printf "%-5s %-10s %-4.2f\n" 2 James 90.9989
printf "%-5s %-10s %-4.2f\n" 3 Jeff 77.564
我们会得到如下格式化的输出:
No Name Mark
1 Sarath 80.35
2 James 91.00
3 Jeff 77.56
原理:
%s、%c、%d和%f都是格式替换符(format substitution character),其所对应的参数可以置于 带引号的格式字符串之后。
%-5s指明了一个格式为左对齐且宽度为5的字符串替换(-表示左对齐)。如果不用-指定对 齐方式,字符串就采用右对齐形式。宽度指定了保留给某个变量的字符数。对Name而言,保留 宽度是10。因此,任何Name字段的内容都会被显示在10字符宽的保留区域内,如果内容不足10 个字符,余下的则以空格符填充。
对于浮点数,可以使用其他参数对小数部分进行舍入。
对于Mark字段,将其格式化为%-4.2f,其中.2指定保留2个小数位。注意,在每行格式字符 串后都有一个换行符(\n)。
3,echo同样接收双引号字符串内的转义序列作为参数,如果需要使用转义序列,则采用echo -e “包含转义序列的字符串” 栗子:echo -e "1\t2\t3"
4,对于进程来说,运行时的环境变量可以使用下面的命令来查看:cat /proc/$PID/environ
5,获取字符串的长度:length=${#var}
6,检查是否为超级用户:
if [ $UID -ne 0 ];then
echo Non root user.Please run as root
else
echo Root user
fi
#root用户的UID是0
7,使用shell进行数学运算
let命令可以直接执行基本的算术操作,当使用let时,变量名之前不需要添加$
栗子:let result=no1+no2
自加操作:let no1++
自减操作:let no1--
简写形式:let no1+=6
操作符[ ]的使用方法和let命令类似:
result=$[ no1+no2 ]
在[ ] 中可以使用$前缀,例如:
result=$[ $no1+5 ]
也可以使用(()),但使用(())时,变量名之前需要加上$:
result=$(( no1+5))
以上的方法只用于整数运算,不支持浮点数。
相关文章推荐
- Linux shell 脚本攻略shell代码(小试牛刀)
- shell脚本攻略学习笔记(一)小试牛刀
- 《shell 脚本攻略》--正则表达式的使用
- Shell 命令--网站--总结自《Linux Shell 脚本攻略》
- Shell 脚本小试牛刀(4) -- 创建 git 仓库
- Shell攻略-小试牛刀
- shell 脚本攻略--命令之乐
- Shell 命令--echo tr ls--总结自《Linux Shell 脚本攻略》
- Shell脚本攻略04-玩转文件描述符及重定向
- Shell脚本攻略05-数组和关联数组
- Linux Shell脚本攻略1:小试牛刀(3)
- shell脚本攻略学习笔记(九)管理重任
- Shell 脚本小试牛刀(0) -- 开篇
- [linux-shell]脚本攻略学习笔记
- shell脚本攻略第一章总结
- shell脚本攻略- grep 文本查找总结
- Linux Shell脚本攻略1:小试牛刀(2)
- Shell 脚本小试牛刀(番外) -- 捷报
- Shell 脚本小试牛刀(1) -- Debian系统初装后的各种配置
- SHELL脚本攻略(学习笔记)--2.1 cat