Shell

2017-06-14  本文已影响37人  overflow_hidden

!/bin/bash

echo "Hello World !"
屏幕快照

#! 是一个约定的标记,它告诉系统这个脚本需要什么解释器来执行,即使用哪一种 Shell。
echo 命令用于向窗口输出文本。

1. Shell 变量

1.1 定义变量
定义变量时,变量名不加美元符号($,PHP语言中变量需要),如:

  your_name="runoob.com"  //变量名和等号之间不能有空格

命名规范:

1.2 使用变量
使用一个定义过的变量,只要在变量名前面加美元符号即可,如:

your_name="zhanglinyu"
echo $your_name //控制台打印出 zhangzhong
echo ${your_name} // 推荐写法
your_name="zhangzhong"
echo ${your_name} //控制台打印出 zhangzhong
//变量名外面的花括号是可选的,加不加都行,加花括号是为了帮助解释器识别变量的边界,比如下面这种情况:${your_name}Script

1.3 只读变量
使用readonly 命令可以将变量定义为只读变量,只读变量的值不能被改变。

your_name="zhanglinyu"
readonly myUrl
your_name="zhangzhong"
屏幕快照

**1.4 删除变量 **
使用 unset 命令可以删除变量。语法:

 unset variable_name //注意不能删除只读变量

1.5 变量类型
运行shell时,会同时存在三种变量:
+ 局部变量 局部变量在脚本或命令中定义,仅在当前shell实例中有效,其他shell启动的程序不能访问局部变量。

+ 环境变量 所有的程序,包括shell启动的程序,都能访问环境变量,有些程序需要环境变量来保证其正常运行。必要的时候shell脚本也可以定义环境变量。

+ shell变量 shell变量是由shell程序设置的特殊变量。shell变量中有一部分是环境变量,有一部分是局部变量,这些变量保证了shell的正常运行

2. Shell 字符串
字符串是shell编程中最常用最有用的数据类型(除了数字和字符串,也没啥其它类型好用了),字符串可以用单引号,也可以用双引号,也可以不用引号。 推荐使用双引号

str="Hello, I know your are ${your_name}!"
echo ${str} //双引号里面可以有变量和转义字符,单引号不行。

3. 数组
bash支持一维数组(不支持多维数组),并且没有限定数组的大小。

定义数组语法:
在Shell中,用括号来表示数组,数组元素用"空格"符号分割开。定义数组的一般形式为:

array_name=(1 2 3 4)
//或者
array_name[0]=1
array_name[1]=2
array_name[n]=3 //可以不使用连续的下标,而且下标的范围没有限制。

** 读取数组**

echo ${array_name[0]} //
echo ${array_name[@]} //返回数组所有

获取数组的长度

length=${#array_name[@]}
echo ${length} //4

注释
以"#"开头的行就是注释,会被解释器忽略。

4. Shell 传递参数

 bash test.sh test  
  //则第一个参数是test  
  //我们一般发布命令就要传入test prd之类发布到不同的环境 ,就是通过参数来区别的。

echo "Shell 传递参数实例!";  
echo "执行的文件名:$0"; 
echo "第一个参数为:$1";
echo "传入几个参数:$#";
echo "输出所有参数:$*"
echo "脚本运行的当前进程ID号:$$"
echo "脚本运行的最后一个进程ID号:$!"

//控制台输出

Shell 传递参数实例!
执行的文件名:test.sh
第一个参数为:test
屏幕快照

5.Shell 基本运算符

原生bash不支持简单的数学运算,但是可以通过其他命令来实现,例如 awk 和 expr,expr 最常用。
expr 是一款表达式计算工具,使用它能完成表达式的求值操作。

屏幕快照

例如,两个数相加(注意使用的是反引号 ` 而不是单引号 '):

val=`expr 2 + 2`
echo "两数之和为 : $val"

注意: 表达式和运算符之间要有空格,例如 2+2 是不对的,必须写成 2 + 2,这与我们熟悉的大多数编程语言不一样。
完整的表达式要被 包含,注意这个字符不是常用的单引号,在 Esc 键下边。

关系运算符
a=10
b=20

if [ $a -eq $b ]
then
   echo "$a -eq $b : a 等于 b"
else
   echo "$a -eq $b: a 不等于 b"
fi

//10 -eq 20: a 不等于 b
布尔运算符 逻辑运算符 字符串运算符 文件测试运算符
file="./test.sh"
if [ -r $file ]
then
   echo "文件可读"
else
   echo "文件不可读"
fi
//文件可读

6.echo输出命令

# 控制台输入 ok  则 name等于ok
read name 
echo "$name It is a test"
echo `date`//获取命令的信息 date是一个执行命令
echo $(date)//获取命令的信息
# -e 开启转义
echo -e "OK! \n $str" 

# 显示结果定向到文件myfile.txt  如果没有这个文件,就会主动创建
echo "It is a test" > myfile.txt

#原样输出字符串,不进行转义或取变量(用单引号)  输出的就是$str\
echo '$str\'   

#显示命令执行的时间
echo `date` 

7.printf输出命令
Shell不止echo一个输出命令,还有printf。printf 命令模仿 C 程序库(library)里的 printf() 程序。标准所定义,因此使用printf的脚本比使用echo移植性好。想要学习的可以自己Google。

8.test命令
Shell中的 test 命令用于检查某个条件是否成立,它可以进行数值、字符和文件三个方面的测试。

9.流程控制

9.1 if else

if condition
then
    command1 
    command2
    ...
    commandN 
fi

if [ ! -z str ]; then echo "true"; fi  //如果变量长度不为0输出true   

9.2 case
Shell case语句为多选择语句。可以用case语句匹配一个值与一个模式,如果匹配成功,执行相匹配的命令。case语句格式如下:

#! /bin/bash
env=$1
case $env in
    test)
        serverPath1=root@127.0.0.3:/usr/
        ;;
    regress)
        zipsTarget1=""
        ;;
     prd)
        serverPath1=root@127.0.0.1:/usr/
        ;;
      *)
        echo "Need to specify env (test | regress | prd)"
        exit -1;
        ;;
esac

bash test.sh test  //则执行第一条,在前端发布代码区分环境时,经常使用。

还有其他的 for循环,while 语句,until 循环,自行google。

10.Shell函数

11. Shell 输入/输出重定向

输入输出指令
//ssh-key配置指令
cat ~/.ssh/id_rsa.pub | ssh  root@127.0.0.1 "cat - >> ~/.ssh/authorized_keys"

#!/bin/bash
echo "这是重定向输出的文字" > myfile.txt  #会覆盖原来文  件里面的内容
echo "以追加的形式添加到文件的末尾" >> myfile.txt #以追加的形式添加到文件的末尾
cat myfile.txt  #读取myfile.txt里面的内容
//myfile.txt内容
//这是重定向输出的文字
以追加的形式添加到文件的末尾

12.rsync命令

rsync命令是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件。rsync使用所谓的“rsync算法”来使本地和远程两个主机之间的文件达到同步,这个算法只传送两个文件的不同部分,而不是每次都整份传送,因此速度相当快。 rsync是一个功能非常强大的工具,其命令也有很多功能特色选项,我们下面就对它的选项一一进行分析说明。

13.Linux 命令大全

命令参考地址

14.Mac的一些常用命令

Mac常用命令

其它命令

uname  显示操作系统的有关信息
clear  清除窗口内容
env 显示当前所有设置过的环境变量
who 列出当前登录过的所有用户
whoami 列出当前正进行操作的用户名
tty 显示终端或者伪终端的名称
stty  显示或者重置控制键定义
du  查询磁盘的使用情况
df /tmp   显示文件系统的总空间和可用空间
w   显示当前系统活动的总信息
date 显示系统当前的时间和日期
cal 显示日历
上一篇下一篇

猜你喜欢

热点阅读