Shell 基础教程

1、Shell 变量

使用变量

your_name="qinjx"
echo $your_name
echo ${your_name}

重新赋值变量

your_name="tom"
echo $your_name
your_name="alibaba"
echo $your_name

只读变量

readonly myUrl
myUrl="http://www.runoob.com"

删除变量

unset variable_name

2、Shell 字符串

单引号

str='this is a string'

双引号

greeting="hello, "$your_name" !"
greeting_1="hello, ${your_name} !"
echo $greeting  $greeting_1
输出结果为:
hello, runoob ! hello, runoob !
hello, runoob ! hello, ${your_name} !
  • 单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的;
  • 单引号字串中不能出现单独一个的单引号(对单引号使用转义符后也不行),但可成对出现,作为字符串拼接使用。

获取字符串长度

string="abcd"
echo ${#string} #输出 4

提取子字符串

string="runoob is a great site"
echo ${string:1:4} # 输出 unoo

查找子字符串

string="runoob is a great site"
echo `expr index "$string" io`  # 输出 4

3、Shell 数组

定义数组

array_name=(value0 value1 value2 value3)

读取数组

valuen=${array_name[n]}
使用 @ 符号可以获取数组中的所有元素,例如:
echo ${array_name[@]}

获取数组的长度

# 取得数组元素的个数
length=${#array_name[@]}
# 或者
length=${#array_name[*]}
# 取得数组单个元素的长度
lengthn=${#array_name[n]}

4、Shell 注释

单行注释

# 这是一个注释

多行注释

:<
EOF 也可以使用其他符号:
:<<'
注释内容...
注释内容...
注释内容...
'

:<

5、Shell 传递参数

以下实例我们向脚本传递三个参数,并分别输出,其中 $0 为执行的文件名:

echo "Shell 传递参数实例!";
echo "执行的文件名:$0";
echo "第一个参数为:$1";
echo "第二个参数为:$2";
echo "第三个参数为:$3";
$ chmod +x test.sh 
$ ./test.sh 1 2 3
Shell 传递参数实例!
执行的文件名:./test.sh
第一个参数为:1
第二个参数为:2
第三个参数为:3

6、Shell 基本运算符

算术运算符
Shell 基础教程_第1张图片

a=10
b=20

val=`expr $a + $b`
echo "a + b : $val"

val=`expr $a - $b`
echo "a - b : $val"

val=`expr $a \* $b`
echo "a * b : $val"

val=`expr $b / $a`
echo "b / a : $val"

val=`expr $b % $a`
echo "b % a : $val"

if [ $a == $b ]
then
   echo "a 等于 b"
fi
if [ $a != $b ]
then
   echo "a 不等于 b"
fi
a + b : 30
a - b : -10
a * b : 200
b / a : 2
b % a : 0
a 不等于 b

关系运算符
Shell 基础教程_第2张图片
布尔运算符
Shell 基础教程_第3张图片
逻辑运算符
4

字符串运算符
Shell 基础教程_第4张图片

文件测试运算符
Shell 基础教程_第5张图片

7、Shell echo命令

显示转义字符

echo "\"It is a test\""

显示换行

echo -e "OK! \n" # -e 开启转义

显示结果定向至文件

echo "It is a test" > myfile

8、Shell 流程控制

if else

if condition
then
    command1 
    command2
    ...
    commandN
else
    command
fi

if else-if else

if condition1
then
    command1
elif condition2 
then 
    command2
else
    commandN
fi

for 循环

for var in item1 item2 ... itemN
do
    command1
    command2
    ...
    commandN
done

while 语句

while condition
do
    command
done

case … esac

#!/bin/sh

site="runoob"

case "$site" in
   "runoob") echo "菜鸟教程" 
   ;;
   "google") echo "Google 搜索" 
   ;;
   "taobao") echo "淘宝网" 
   ;;
esac

9、Shell 函数

#!/bin/bash
# author:菜鸟教程
# url:www.runoob.com

demoFun(){
    echo "这是我的第一个 shell 函数!"
}
echo "-----函数开始执行-----"
demoFun
echo "-----函数执行完毕-----"

函数参数

#!/bin/bash
# author:菜鸟教程
# url:www.runoob.com

funWithParam(){
    echo "第一个参数为 $1 !"
    echo "第二个参数为 $2 !"
    echo "第十个参数为 $10 !"
    echo "第十个参数为 ${10} !"
    echo "第十一个参数为 ${11} !"
    echo "参数总数有 $# 个!"
    echo "作为一个字符串输出所有参数 $* !"
}
funWithParam 1 2 3 4 5 6 7 8 9 34 73
第一个参数为 1 !
第二个参数为 2 !
第十个参数为 10 !
第十个参数为 34 !
第十一个参数为 73 !
参数总数有 11 个!
作为一个字符串输出所有参数 1 2 3 4 5 6 7 8 9 34 73 !

10、其他操作

获取上级目录

 $(dirname $0)

获取上上级目录

 $(dirname  $(dirname $0))

你可能感兴趣的:(我的前端)