Shell脚本学习指南(一)——基本概念
2016-05-10 21:16
204 查看
基本概念
awk和Bourne Shell,是POSIX Shell的基础除了POSIX标准,还有欧洲的X/Open标准
正则表达式的两种类型
BRE Basic Regular Expressions 基本型 grep使用
ERE Extended Regular Expressions 扩展性 egrep使用
小型Shell脚本的开发,首先,直接在命令行测试,然后将一系列命令放到脚本中,并设置可执行权限,最后使用脚本
$ cat > users #建立文件,使用cat复制终端的输入 who | wc -l #程序的内容 ^D #Ctrl + D表示end-of-line $ chmod +x nusers #让文件拥有可执行权限 $ ./nusers #执行 6 $ cat nusers #文件内容 who | wc -l
Shell脚本第一行的”#!”
#! /bin/sh #告诉系统用哪种Shell解释 #! /bin/sh -f #-f表示执行脚本的参数,后面不能有空格,空格会跟着选项一起传给程序 /bin/sh -f /bin/ls -la #! /bin/awk -f #声明一个awk脚本,参数为-f #! /bin/sh - #表示没有选项。这是基于安全的考虑,可避免欺诈攻击
Shell命令行参数
不需要参数的选项,可以合并
用分号分隔同一行里的多条命令
Shell基本命令
内建命令
Shell函数
外部命令——Shell会启动一个新进程执行外部命令,执行完后,回到Shell的进程继续执行
$加数字,表示脚本的参数
如果参数超过9,则用大括号括起来 ${10}
ls -la cd /usr/bin; ls -la
变量
已字母或下划线开头
变量可以是空值,空值就是null
变量赋值时,等号左右不能有空格
获取变量的值,前面加$;如果值中含空格,需要用引号括起来
#! /bin/sh - var1=1 #=>1 var2=aaa #=>aaa var3="bbb" #=>bbb var4="aaa bbb" #=>aaa bbb var5 =1 #=>错误 var6= 2 #=>错误
输出
echo
简单的输出,以换行符结束
-n选项,省略最后的换行符
echo命令标准不统一,所以可移植性有问题,只用此命令做最简单的输出,不要用复杂的参数
printf
必须显示地指定换行符
#! /bin/sh - echo "Hello World!" #=>Hello World! printf "Hello World! i = [%d]\n" 3 #=>Hello World! i = [3]
IO重定向
> 重定向标准输出
< 重定向标准输入
>> 追加到文件
| 管道
/dev/null 读取/dev/null,会立即返回EOF
基本命令查找
Shell在环境变量$PATH中查找要执行的命令
$PATH中,空项目用::表示,表示当前路径
以:开头,表示先找当前路径
以:结尾,表示最后找当前路径
用.代替空项目,增强可读性
不应该在查找路径中放进当前路径,因为会产生安全问题
执行跟踪
会打印Shell执行的语句
set -x 开始跟踪
set +x 取消跟踪
#! /bin/sh - set -x echo "111" set +x echo "222" #输出: + echo 111 111 + set +x 222
国际化与本地化
internationalization i18n
localization l10n
Locale环境变量
LANG 未设置任何LC_XXX时的默认值
LC_ALL 用来覆盖所有其他的LC_XXX变量的值
LC_COLLATE 排序规则
LC_CTYPE 字符集
LC_MESSAGES 消息与响应(仅POSIX使用)
LC_MONETARY 货币
LC_NUMERIC 数字
LC_TIME 时间与日期
应该避免为任何的LC_XXX变量赋值
locale -a
列出所有locale名称
LC_ALL=da locale -ck LC_TIME
查询丹麦文的时间日期格式
相关文章推荐
- 主机远程管理工具之Xshell 5 ——(1)
- linux启动是自动加载的几个文件说明bashrc等 .
- 【Linux学习笔记九】Shell编程-正则表达式
- shell浅谈之二运算符和IF条件判断
- webshell智能查杀
- Jenkins+Extended Choice Parameter+Shell脚本+Gradle构建不同环境下的发布版本(测试环境,生产环境等等)
- bash嵌套expect实现交换机的交互式登录实例
- shell脚本加密工具
- 生成树状结构的脚本bat\python\shell
- shell新增用户
- spark shell编程基础知识
- Shell数组例子
- shell脚本显示颜色的设置
- linux基础之shell编程(4)-for循环和case语句
- shell浅谈之一变量和引用
- c bash 代码遍历文件夹下所有文件
- shell变量
- shell if语句
- Xshell 连接 Ubuntu虚拟机
- Bash循环与分支浅谈