Shell函数操作总结

Shell函数操作

echo

#! /bin/bash

echo "Hello World !"

如何运行shell文件

终端输入 

`sh 脚本的文件名.sh`

变量

 定义变量

注意:等号两边不能有空格,否则会识别成指令

variable="some value"

让变量只读

readonly variable

删除变量

unset variable_name

使用变量(前面需要加美元符号)

echo $variable

echo $(variable)

脚本参数

传递参数: 

在终端输入 

`sh 脚本的文件名.sh 参数1 参数2 参数3`

获取第0个参数

param1=$0

获取参数个数

args_count=$#

获取所有参数 "参数1 参数2 参数3"表示

args=$*

获取所有参数 "参数1" "参数2" "参数3"表示

args2=$@

显示当前进程ID

pid=$$

后台运行的最后一个ID号

last_pid=$!

显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误

exit_state=$?

if

注意必须以`fi`结尾


if

if condition

then

    command

fi

if - else

if condition

then

    command

else

    command

fi

if - elif - else

if condition1

then

    command1

elif condition2

then

    command2

else

    commandN

fi

 for


for var in item1 item2 ... itemN

do

    command

done

写成一行

for var in item1 item2 ... itemN; do command;done;

while

while condition

do

    command

done

until

与`while`相反 


until condition

do

    command

done

case

必须以`esac`结尾每个分支有两个分号,`*)`表示不匹配的分支

case $aNum in

    1)  echo '你选择了 1'

    ;;

    2)  echo '你选择了 2'

    ;;

    3)  echo '你选择了 3'

    ;;

    4)  echo '你选择了 4'

    ;;

    *)  echo '你没有输入 1 到 4 之间的数字'

    ;;

esac


shell支持break和continue

函数

funWithReturn(){

    read aNum

    read anotherNum

    return $(($aNum+$anotherNum))

}

函数获取参数的方法与脚本获取参数方法一致

引入其他脚本

使用`.`符号引入其他sh脚本

. ./test1.sh

或者使用source

source ./test1.sh

字符串

字符串插值

echo "${variable}"

字符串长度

length=${#variable}

子串

echo ${string:1:4}

字符串拼接

variable ="hello, "$your_name" !"

echo $greeting $variable

字符串可以使用单引号

单引号的字符串无法插值,并且无法用转义字符

数组

定义数组

array_name=(value0 value1 value2 value3)

数组赋值

array_name[0]=value0

数组长度

length=${#array_name[0]}

获取数组所有元素

echo "${my_array[*]}"

echo "${my_array[@]}"

关系运算符

算数运算符

- `+`,`-`,`*`,`/`,`%`,`=`,`==`,`!=`

关系运算符

`-eq` 相等?

`-ne` 不等?

`-gt` 大于?

`-lt` 小于?

`-ge` 大于等于?

`-le` 小于等于?

布尔运算符

 `!` 非

`-o` 或

 `-a` 与

逻辑运算符

`&&` 逻辑与

`||` 逻辑或

字符串运算符

 `=` 相等?

 `!=` 不等?

 `-z $str` 长度为0?

`-n $str` 长度不为0?

`$str` 为空?

文件测试运算符

`-d $file` 目录?

`-f $file` 普通文件?

`-r $file` 可读?

 `-w $file` 可写?

`-x $file` 可执行?

 `-s $file` 0字节?

`-e $file` 是否存在

Shell重定向

 `command > file` 将输出重定向到file

`command < file` 将输入重定向到file

 `command >> file` 将输出追加到file

`n > file` 将文件描述符为 n 的文件重定向到 file

`n >> file` 将文件描述符为 n 的文件以追加的方式重定向到 file

`n >& file` 将输出文件 m 和 n 合并

`n <& file` 将输入文件 m 和 n 合并

`<< tag` 将开始标记 tag 和结束标记 tag 之间的内容作为输入

更多命令参考 

Linux命令大全

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • .bat脚本基本命令语法 目录 批处理的常见命令(未列举的命令还比较多,请查阅帮助信息) 1、REM 和 :: 2...
    庆庆庆庆庆阅读 8,272评论 1 19
  • 为何叫做 shell ? shell prompt(PS1) 与 Carriage Return(CR) 的关系?...
    Zero___阅读 3,212评论 3 49
  • 个人学习批处理的初衷来源于实际工作;在某个迭代版本有个BS(安卓手游模拟器)大需求,从而在测试过程中就重复涉及到...
    Luckykailiu阅读 4,816评论 0 11
  • 1.创建文件夹 !/bin/sh mkdir -m 777 "%%1" 2.创建文件 !/bin/sh touch...
    BigJeffWang阅读 10,247评论 3 53
  • 一,shell题记 不懂shell的程序员不是好程序员,学习shell是为了自动化,使用自动化可以非常有效的提高工...
    架构师小秘圈阅读 8,744评论 3 70