美文网首页
shell入门(一)

shell入门(一)

作者: b470b9fc7145 | 来源:发表于2017-09-14 18:12 被阅读15次

写在前面:

  1. 下载脚本运行下,然后再看解释
  2. 注意运行环境mac
  3. sh XXX.sh(在控制台先打印sh,然后将文件拖过来,enter运行)
  4. 在一般情况下,人们并不区分 Bourne Shell 和 Bourne Again Shell,所以,像 #!/bin/sh,它同样也可以改为 #!/bin/bash。
    (#! 告诉系统其后路径所指定的程序即是解释此脚本文件的 Shell 程序。)
  5. 本教程关注的是 Bash,也就是 Bourne Again Shell,由于易用和免费,Bash 在日常工作中被广泛使用。同时,Bash 也是大多数Linux 系统默认的 Shell。

基本操作

1. 没有参数的函数

#1.没有参数的函数
function fun1 (){

    echo "helloWorld"
    echo "this is fun1"
}

#运行第一行代码
fun1

echo "-------------------------"

运行结果:

helloWorld
this is fun1
-------------------------

2.有参数函数

#2.有参数函数
function func2()
{
    echo "This is func2"

    a=$1
    b=$2
    echo "a is : $a"
    echo "b is : $b"
}
#调用函数2
func2 "aaa" "bbb"

echo "-------------------------"

运行结果:

This is func2
a is : aaa
b is : bbb
-------------------------

3. 变量作用域,local限制在函数内,没有local默认是全局的

#3.变量作用域,local限制在函数内,没有local默认是全局的
function func3(){

#注意=左右不要打空格
    globalValue="我是全局变量"
    local localValue="我是本地变量"

    echo $globalValue
    echo $localValue
}

func3
echo "func3 调用完成...,看结果并不会打印出localValue"
echo $globalValue
echo $localValue

echo "-------------------------"

运行结果:

我是全局变量
我是本地变量
func3 调用完成...,看结果并不会打印出localValue
我是全局变量

-------------------------

4. 默认是字符串

#4.默认是字符串
function func4(){

    #字符串操作1:默认就是字符串
str1=hello
str2='hello'
str3="hello"

echo str1
echo str2
echo str3

}

func4

echo "-------------------------"

输出结果:

str1
str2
str3
-------------------------

5. 获取字符串的长度

#5.获取字符串的长度
function func5(){

#获取字符串的长度
stringLengthTest="hello world"
echo "stringLengthTest length: ${#stringLengthTest}"

}

func5

echo "-------------------------"

输出结果:

stringLengthTest length: 11
-------------------------

6.字符串拼接($和${}并没有多大区别,区别在于作用域)

#6.字符串拼接
function func6(){

#字符串拼接
#$和${}并没有多大区别,区别在于作用域
str1="hello"
str2="world"

str3=${str1}"+"${str2}
echo ${str3}

str4=$str1$str2
echo $str4

}

func6

echo "-------------------------"

输出结果

hello+world
helloworld
-------------------------

7. 原生bash不支持简单的数学运算,但是可以通过其他命令来实现,例如 awk 和 expr,expr 最常用。

#7.原生bash不支持简单的数学运算,但是可以通过其他命令来实现,例如 awk 和 expr,expr 最常用。
#注意使用的是反引号 ` 而不是单引号 '
function func7 (){

    a=1
    b=2
    c=`expr $a + $b`
    echo $c
}
func7

echo "-------------------------"

输出结果:

3
-------------------------

8.数组操作-直接初始化

#8.数组操作-直接初始化
#初始化时不需要指定数组的大小
function func8(){
echo "格式一"
my_arr=(1 2 3)
# 遍历数组格式1
echo "my_arr: ${my_arr[*]}"
#获取数组长度
echo "my_arr length: ${#my_arr[*]}"

echo "格式二"
# 遍历数组格式2
echo "my_arr: ${my_arr[@]}"
#获取数组长度
echo "my_arr length: ${#my_arr[@]}"

echo "获取数组某个元素"
echo "第1个元素: ${my_arr[1]}"

echo "数组赋值"
my_arr[0]=a
my_arr[1]=b
my_arr[223]=c # 不连续初始化
echo "my_arr: ${my_arr[@]}"

}

func8

输出结果:

格式一
my_arr: 1 2 3
my_arr length: 3
格式二
my_arr: 1 2 3
my_arr length: 3
获取数组某个元素
第1个元素: 2
数组赋值
my_arr: a b 3 c

注意点

  1. 变量默认是全局变量
  2. ${ }用于变量替换。一般情况下,$var 与${var} 并没有啥不一样。但是用 ${ } 会比较精确的界定变量名称的范围。
  3. 原生bash不支持简单的数学运算,但是可以通过其他命令来实现,例如 awk 和 expr,expr 最常用。(注意使用的是反引号 ` 而不是单引号 ')
  4. Bash 只支持一维数组,用圆括号()来表示,初始化时不需要指定数组的大小

下篇讲逻辑运算

参考文档

Linux shell 中$() ,${},$[] $(()),[ ] (( )) [[ ]]作用与区别
Shell 基本运算符

相关文章

网友评论

      本文标题:shell入门(一)

      本文链接:https://www.haomeiwen.com/subject/ndidsxtx.html