您的位置:首页 > 运维架构 > Shell

Linux Shell脚本攻略:基础入门

2016-08-31 21:52 274 查看
1.什么是shell

shell从根本上是一个命令解析器,接收用户的简单命令,送到内核去调用Linux封装好的程序执行。

shell脚本是一个以#!(shebang)开头的文件:#!/bin/bash,/bin/bash是bash解释器命令路径。shell脚本运行方式有两种:

(1)- bash scripts.sh # 将脚本作为命令行参数(可舍去shebang)

(2)- chmod a+x scripts.sh; - ./scripts.sh# 赋予可执行权限(内核读取shebang,并执行:/bin/bash scripts.sh)

2.基本语法

(1) 输出

echo "hello world";  echo 'hello world';  echo hello world

引号的作用:双引号需转义叹号;单引号不能使用变量替换;无引号不能显示分号

printf "%-5s %-10s %-4s\n" No Name Mark
%-5:左对齐宽度为5;%5:右对齐宽度为5;
%s—字符串;%c—字符;%d—十进制;%f—浮点数
(2) 变量
定义:a=1;
使用:$a;
获得字符串长度:length=${#var}# 含义为:echo $var | bc
识别当前shell:$SHELL、$0
(3) 算数/逻辑运算
整数:
let a=b+c;  
a=$[ b + c ]
a=$(( b + c ))
a=$(expr $b + $c )
a=`expr $b + $c`
浮点数:# 反引号``执行了语句并获得返回值;bc命令是用于数学计算的高级命令
a=`echo "$b * $c" | bc`
a=`echo "scale=2;$b/$c"`
a=`echo "obase=2;ibase=10;$no"`# 进行了进制转换
逻辑运算:
-gt:大于;-lt:小于;-ge:大于或等于;-le:小于或等于;-ne:不等于
(4) 文件重定向
shell可将输出的内容重定向到文件,存储起来
0——stdin——标准输入;1——stdout——标准输出;2——stderr——标准错误
echo "hello world"
> stdout.txt     # 重定向文本,等同于1>
echo "hello world"2> stderr.txt     # 重定向错误

echo "hello world"2>&1 std.txt     # 重定向本文和错误

echo "hello world"&> std.txt         #
重定向本文和错误

echo "hello world">> atdout.txt    #
追加文本

(5) 数组
shell里面的数组支持字符串作为索引,即关联数组

定义数组:arr=(1 2 3 4 5)
单个赋值:arr[0]="test1";arr[1]="test2"
打印数组元素:echo ${arr[0]}    |    echo ${arr[$index]}    |    echo ${arr[*]}  # 打印所有元素
打印数组长度:echo ${#arr[*]}
定义关联数组:
declare -A arr
arr=([index1]=val1 [index2]=val2)
arr[index1]=val1
(6) 过滤器与管道
命令称作过滤器,管道连接多个命令:cmd1 | cmd2 | cmd3
定义子shell:cmd1;(cmd2);cmd3      
 # 括号中的命令执行时,不会对当前有任何影响
(7) 调试相关
别名定义:alias install='sudo apt-get install'
获取日期:date; date +%s; date "+%d %B %Y"
设置日期:date -s XXX; 执行时间:start=date +%s; end=date +%s  | time<scriptpath>
set -x    # 打印出执行的每一行及当前状态
set +x   # 禁止调试
set -v    # 当命令进行读取时显示输入
set +v   # 禁止打印输入
读取n个字符存入变量:read -n 2 var
特定时间内读取:read -t 2 var
特定定界符作为输入结束:read -d “;” var
显示提示信息:read -p "Enter"
无回显显示密码:read -s var
运行命令直至成功:repeat(){}
(8) 空格
- 等号赋值两边不能有空格
- 命令与选项之间需要空格
- 管道两边空格可有可无
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: