美文网首页
linuxShellStudyNote

linuxShellStudyNote

作者: 由木人_番茄 | 来源:发表于2018-01-22 00:54 被阅读0次

1 Shell 中的变量

  • 使用declare声明变量

    declare var_name=var_value

    # declare -i var_name 将定义的变量定义为整数型变量

    # declare -r var_name 声明的变量为只读 变量

    # declare -p var_name 显示指定变量的属性和值

    # declare -x var_name 将指定的变量通过环境输出到后续命令

  • 清除变量

    unset var_name # unset function_name 清除变量或函数

2 变量的引用

`` # 反引号,shell会将反引号中的内容视作命令,并用指向结果代替反引号以及反引号中的内容

'' #单引号,全引用,单引号中的所以内容都不会被解释成其他意思,只保留显示的意义

""# 双引号,半引用,双引号中的内容处理 `` '' "" $ \ 之外,均保留显示的意义

取变量的值

  • 使用 $var_name # 获取变量的值,可能会出错
  • 使用 ${var_name} # 推荐使用这种方式获取变量的值

3 算术表达式

  • 使用let

    let var=" var + 1"

    let var=${var}+3

    # 使用let时如果要在运算符左右使用空格,那么必须加上双引号

    # 使用let 使用可以使用$,也可以不实用$

  • 使用 expr

    var=`expr $var1 \* $ var2`

    # **实用expr时运算符左右必须实用空格,变量必须使用$ **

  • 使用 $(())

    var=$(( var1 +${var2} ))

    # 可以使用$,也可以不使用$,运算符左右可以使用空格也可以不适用空格

  • 使用$[]

    var=$[ ${var1}+ var2 ]

    # 可以使用$,也可以不使用$,运算符左右可以使用空格也可以不适用空格

  • 使用 bc

    # 前面的集中方法只能用于处理整数而不能用于处理浮点数运算

    # bc 提供任意精度的计算

    • 1 直接使用外部程序 bc

    • 2 使用管道

      res=` echo "${var1}/10 + 2*(3-5*4)" | bc -l `

4输入输出

  • read 输入

    read -r var1 var2

  • printf 格式化输出

    printf "%.3f\n" ${var}

5命令替换

  • `shell_command`
  • $(shell_command)

6测试

  • 字符串测试

    # 字符串测试

  • 整数测试

    # 整数测试

  • 文件测试

    # 文件测试

7函数

1定义

func_name(){
  statment1
  statment2
}
# or
function func_name(){
  statment1
  statment2
}

2调用

func_name arg1 arg2 arg3

3函数链接/函数调用函数

helloWord(){
  echo "Hello World"
}
function alice(){
  echo "in allice"
  helloWord()
  echo "end"
}
#调用函数
allice()

4函数返回值

Shell 中的函数的返回值必须是0-255之间的整数,即函数只能返回状态码

函数的返回值可以通过$?来获取

5获取函数参数

# $# 获取参数的个数
# $n 获取第n个参数,其中n为正整数
# $@ $* 获取所有参数
# 移动位置参数
# shift

function func(){
  while (( $# > 0 ))
  do
      echo "${1}"
      echo $#
      #shift改变$#的值
      shift
  done
}
#间接参数传递
var1=var2
var3=var1
echo ${!var3}
#output var2
# 传递数组
# shell 不支持传递数组,但是可以通过其他方式传递数组的值
func_name "${arr[@]}"
# 双引号必须加,否则会出错
# 调用其他文件的函数
#! /bin/bash
#载入函数库
. file_name.sh
# dot 后面必须有**空格**

相关文章

  • linuxShellStudyNote

    1 Shell 中的变量 使用declare声明变量declare var_name=var_value# dec...

网友评论

      本文标题:linuxShellStudyNote

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