shell学习笔记

# Shell
https://www.runoob.com/linux/linux-shell.html

**#!/bin/bash**     使用bashshell


**shell文件建立基本流程**
vi建立   .sh文件
在文件中编辑语句并保存退出
使用  chmod  +x   ./文件名.sh  
将.sh文件转变为可执行文件


可直接定义变量且赋值,例如:
my_name=test
显示变量值则为:
echo $my_name
变量可二次赋值:
my_name=test2


在文件中加入   readonly 变量名  ,则该变量成为只读


unset 变量名     删除变量名,但不能删除只读变量

Shell字符串定义
单引号:
Str=’this is a string’
单引号中的变量无效,原样输出
双引号:
Your——name=”ruunoob”
Str=”hello,I know your are \”$your_name\”! \n“
Echo -e $str
-e  激活转义字符
双引号中可以有变量,且可以出现转义字符
多个字符串可进行拼接


获取字符串长度:
String = “abcd”
Echo ${#string}    #输出 4

变量为数组时, ${#string”等价于${#string[0]}


提取子字符串
String = “runoob is a great site”
Echo ${string:1:4}   
输出结果为    unoo
第一个索引字符为0;


查找子字符串
String = “runoob is a great site”
Echo `expr indx “$string” io`     
输出4,查找i或o,先出现的o位置为4
使用反引号  `   而不是单引号‘


Shell数组
Array_name=(v1   v2    v3   v4)
Value=${array_name[n]}获得n位置元素
Echo ${arrary_name[@]}获得所有元素
@


获得数组长度
Length=${#array_name[@]}         Length=${#array_name[*]}
单个元素长度
Length=${#array_name[n]}


Shell用#进行注释
多行注释为
:<<EOF


EOF
可将EOF换成其他符号


编写SHELL时,需要传递参数则相应位置放入   $0    $1    依次增长
传入方式    ./test.sh   1   2   3

$#    传递到脚本的参数个数
$*    以一个单字符串显示所有向脚本传递的参数。如"$*"用「"」括起来的情况、以"$1 $2 … $n"的形式输出所有参数。
$$    脚本运行的当前进程ID号
$!    后台运行的最后一个进程的ID号
$@    与$*相同,但是使用时加引号,并在引号中返回每个参数。如"$@"用「"」括起来的情况、以"$1" "$2" … "$n" 的形式输出所有参数。
$-    显示Shell使用的当前选项,与set命令功能相同。
$?    显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误。

$* 与 $@ 区别:
相同点:都是引用所有参数。
不同点:只有在双引号中体现出来。假设在脚本运行时写了三个参数 1、2、3,,则 " * " 等价于 "1 2 3"(传递了一个参数),而 "@" 等价于 "1" "2" "3"(传递了三个参数)。

Shell 基本运算符

Val=`expr 2 + 2`
使用反引号
表达式与运算符之间要有空格,否则错误


关系运算符只支持数字,不支持字符串,除非字符串的值是数字。
下表列出了常用的关系运算符,假定变量 a 为 10,变量 b 为 20:
运算符    说明    举例
-eq    检测两个数是否相等,相等返回 true。    [ $a -eq $b ] 返回 false。
-ne    检测两个数是否不相等,不相等返回 true。    [ $a -ne $b ] 返回 true。
-gt    检测左边的数是否大于右边的,如果是,则返回 true。    [ $a -gt $b ] 返回 false。
-lt    检测左边的数是否小于右边的,如果是,则返回 true。    [ $a -lt $b ] 返回 true。
-ge    检测左边的数是否大于等于右边的,如果是,则返回 true。    [ $a -ge $b ] 返回 false。
-le    检测左边的数是否小于等于右边的,如果是,则返回 true。    [ $a -le $b ] 返回 true。
[$a  -   $b]


布尔运算符
下表列出了常用的布尔运算符,假定变量 a 为 10,变量 b 为 20:
运算符    说明    举例
!    非运算,表达式为 true 则返回 false,否则返回 true。    [ ! false ] 返回 true。
-o    或运算,有一个表达式为 true 则返回 true。    [ $a -lt 20 -o $b -gt 100 ] 返回 true。
-a    与运算,两个表达式都为 true 才返回 true。    [ $a -lt 20 -a $b -gt 100 ] 返回 false。
O——or——或
A——and——与
【$a      —        ¥b】

逻辑运算符
以下介绍 Shell 的逻辑运算符,假定变量 a 为 10,变量 b 为 20:
运算符    说明    举例
&&    逻辑的 AND    [[ $a -lt 100 && $b -gt 100 ]] 返回 false
||    逻辑的 OR    [[ $a -lt 100 || $b -gt 100 ]] 返回 true


字符串运算符
下表列出了常用的字符串运算符,假定变量 a 为 "abc",变量 b 为 "efg":
运算符    说明    举例
=    检测两个字符串是否相等,相等返回 true。    [ $a = $b ] 返回 false。
!=    检测两个字符串是否不相等,不相等返回 true。    [ $a != $b ] 返回 true。
-z    检测字符串长度是否为0,为0返回 true。    [ -z $a ] 返回 false。
-n    检测字符串长度是否不为 0,不为 0 返回 true。    [ -n "$a" ] 返回 true。
$    检测字符串是否为空,不为空返回 true。    [ $a ] 返回 true。


Echo 主要功能为输出

.显示结果定向至文件
echo "It is a test" > myfile

printf 命令的语法:
printf  format-string  [arguments...]
参数说明:
format-string: 为格式控制字符串
arguments: 为参数列表。
printf "%-10s %-8s %-4s\n" 姓名 性别 体重kg  printf "%-10s %-8s %-4.2f\n" 郭靖 男 66.1234printf "%-10s %-8s %-4.2f\n" 杨过 男 48.6543printf "%-10s %-8s %-4.2f\n" 郭芙 女 47.9876

流程控制
https://www.runoob.com/linux/linux-shell-process-control.html
funWithReturn(){    echo "这个函数会对输入的两个数字进行相加运算..."    echo "输入第一个数字: "    read aNum    echo "输入第二个数字: "    read anotherNum    echo "两个数字分别为 $aNum 和 $anotherNum !"    return $(($aNum+$anotherNum))}funWithReturnecho "输入的两个数字之和为 $? !"
输出类似下面:
这个函数会对输入的两个数字进行相加运算...
输入第一个数字: 
1
输入第二个数字: 
2
两个数字分别为 1 和 2 !
输入的两个数字之和为 3 !
函数返回值在调用该函数后通过 $? 来获得。
注意:所有函数在使用前必须定义。这意味着必须将函数放在脚本开始部分,直至shell解释器首次发现它时,才可以使用。调用函数仅使用其函数名即可。


输入输出重定向
https://www.runoob.com/linux/linux-shell-io-redirections.html


shell文件包含
.   文件名
被包含的文件不需要可执行权限

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值