Shell脚本

一、Shell

  1. 注释,解释器
    Shell 脚本中用#表示注释,相当于 C 语言的//注释。但如果#位于第一行开头,并且是#!(称为 Shebang)则例外,它表示该脚本使用后面指定的解释器/bin/sh 解释执行。如果把这个脚本文件加上可执行权限然后执行。

  2. 运行脚本
    . 脚本名
    ./脚本名
    source 脚本名
    /bin/bash 脚本名

  3. shell语法
    a.数据类型
       字符串String (只有这一种)
    b.变量
     变量建议大写
     本地变量----(局部变量) 默认为本地变量
     环境变量----(全局变量)
     注意等号两边都不能有空格,否则会被 Shell 解释成命令和命令行参数。
     声明变量:itcast$ VAR=10(本地变量 VAR 的值是字符串10 而非整数)
     itcast$ export VAR(将本地变量转换为全局变量)
     itcast$ env | grep VAR
     得到SVAR=10
     env:查询环境变量
     删除变量:itcast$ unset VAR
    c.函数
    d.面向对象(shell不支持)
       继承、重载、封装、多态…
    e.框架

    3.1 test条件测试
    命令 test 或 [ 可以测试一个条件是否成立,真:0 假:1
    Test 测试条件
    [空格 测试条件
    itcast$ VAR=10
    itcast$ test $var -gt 100或[ v a r − g t 100 只 执 行 , 但 不 会 返 回 结 果 ) i t c a s t var -gt 100只执行,但不会返回结果) itcast vargt100itcast echo $?(查看上一个命令执行的结果)

    整数判别符:(只能用在整数之间)
    -eq(等于)
    -ne(不等于)
    -gt(大于)
    -lt(小于)
    -ge(大于等于)
    -le(小于等于)

    文件类型判别符:
    -d 目录文件
    -f 普通文件
    -p 管道
    -l 软连接
    -c 字符设备
    -b 块设备
    -s socket

    字符串长度判断:
    [ -z STRING ] 如果 STRING 的长度为零则为真
    [ -n STRING ] 如果 STRING 的长度非零则为真

    逻辑运算:与、或、非
    -a ---- &&逻辑与,
    -o ---- ||逻辑或,
    ! 逻辑非

    3.2 if分支
    if/then/elif/else/fi
    If [ 判断条件 ];then
    执行内容
    elif [ 判断条件 ];then
    执行内容
    else
    执行内容
    fi

    其中
    if :; then echo “always true”; fi
    “:”是一个特殊的命令,称为空命令,该命令不做任何事,但 Exit Status 总是真。

    3.3 case/esac
    每个匹配分支可以有若干条命令,末尾必须以;; 结束
    echo “Is it morning? Please answer yes or no.”
    read YES_OR_NO
    case “$YES_OR_NO” in
    yes|y|Yes|YES)
    echo “Good Morning!”;;
    [nN][Oo
    echo “Good Afternoon!”;;
    *)
    echo "Sorry, $YESORNO not recognized. Enter yes or no
    return 1;;
    esac

    3.4. for/do/done循环
    它类似于某些编程语言的 foreach 循环。
    for FRUIT in apple banana pear; do
    echo "I like $FRUI
    done

    3.5 while/do/done
    COUNTER=1
    read passwd
    while [ p a s s w d ! = " i t c a s e " − a " passwd != "itcase" -a " passwd!="itcase"a"COUNTER" -lt 4 ]; do
    echo “Here we go again”
    COUNTER=$[COUNTER+1]
    read passwd
    done

  4. 通配符
    *匹配 0 个或多个任意字符
    ? 匹配一个任意
    [若干字符] 匹配方括号中任意一个字符的一次
    例:
    ls *.sh
    ls ???.sh
    ls [a-z][0-9][0-9].sh (查找t34.sh)

  5. 命令代换
    由“`”反引号括起来的也是一条命令,Shell 先执行该命令,然后将输出结果立刻代换到当前命令行中。 例如:

    DATE=date
    echo $DATE

    命令代换也可以用$()表示:
    $ DATE=$(date)

    VAR =$(date)
    Echo $VAR

  6. 算术代换
    对变量执行算数运算:$((变量名))或 [ 变 量 名 ) ] i t c a s t [变量名)] itcast [)]itcast VAR=45
    itcast$ echo ( ( (( ((VAR+3)) 等价于 $((var+3)) 或 echo $[VAR+3]或 [ [ [VAR+3]
    $[base#n],其中 base 表示进制,n 按照 base 进制解释,后面再有运算数,按十进制解释。
    例 echo $[2#10+3]----5
    echo $[8#10+3]----11
    echo $[16#10+3]----19

  7. 转义字符
    a. \

    b. –
    因为各种 UNIX 命令都把-号开头的命令行参数当作命令的选项,而不会当作文件名。
    创建为-hello的文件:
    itcast$ touch – -hello
    itcast$ touch ./-hello
    删除为-hello的文件:
    rm – -hello
    c.续行符
    在\后敲回车表示

  8. 单引号
    括字符串

  9. 双引号
    括字符串 可防止通配符扩展,但允许变量扩展。建议在测试变量取值时都加“”。
    itcast$ VAR=200
    itcast$ echo V A R 200 i t c a s t VAR 200 itcast VAR200itcast echo ‘$VAR’
    V A R i t c a s t VAR itcast VARitcast echo “$VAR”
    200

  10. 位置参数
    $0 相当于 C 语言 main 函数的 argv[0]
    $1、$2… 这些称为位置参数(Positional Parameter),相当于 C 语言 main 函数的 argv[1]、argv[2]…
    $# 相当于 C 语言 main 函数的 argc - 1,注意这里的#后面不表示注释
    $@ 表示参数列表"$1" “$2” …,例如可以用在 for 循环中的 in 后面。
    $* 表示参数列表"$1" “$2” …,同上
    $? 上一条命令的 Exit Status
    $$ 当前进程号
    Shift 左移命令参数

  11. 输入输出echo
    显示文本行或变量,或者把字符串输入到文件。
    echo [option] string
    -e 解析转义字符
    -n 不回车换行。默认情况 echo 回显的内容后面跟一个回车换行
    echo “hello\n\n”
    echo -e “hello\n\n”
    echo “hello”
    echo -n “hello”

  12. tee
    tee 命令把结果输出到标准输出,另一个副本输出到相应文件。
    tee -a a.txt 表示追加操做
    df -k | awk ‘{print $1}’ | grep -v “文件系统” | tee -a a.txt

  13. 函数
    foo(){ echo “Function foo is called”;}
    echo “-=start=-”
    foo
    echo “-=end=-”
    注意函数体的左花括号 { 和后面的命令之间必须有空格或换行。如果将最后一条命令和右花括号 } 写在同一
    行,命令末尾必须有分号;。

  14. 脚本调试方法
    n 读一遍脚本中的命令但不执行,用于检查脚本中的语法错误。
    -v 一边执行脚本,一边将执行过的脚本命令打印到标准错误输出。
    -x 提供跟踪执行信息,将执行的每一条命令和结果依次打印出来。

  15. 正则表达式
    1.字符类
    2.数量限定符
    3.位置限定符

  16. Sed
    sed 命令行的基本格式为:
    sed option ‘script’ file1 file2 … sed 参数 ‘脚本(/pattern/action)’ 待处理文件
    sed option -f scriptfile file1 file2 … sed 参数 –f ‘脚本文件’ 待处理文件
    如:
    sed “s/the/this/” testfile 将源文件内容每行第一个the替换为this。(输出到标准输出缓冲区中,输出后看到的内容是改变后的,但原文件本身内容并没有被修改。)(将当前文件读出来放缓冲区中,然后在缓冲区中做替换操作)
    sed -i “s/the/this/g” testfile 将源文件内容中全部the替换为this (g),原文件本身内容也将会被修改(-i)。
    sed “s/the/this/g” testfile | tee t111 把结果输出到标准输出,同时生成一个副本t111。
    sed -i “2a itcast” testfile 在输出 testfile 内容的第二行后添加"itcast"。
    sed -i “3d” testfile 删除第三行

利用 TensorFlow 训练自己的目标识别器。本文内容来自于我的毕业设计,基于 TensorFlow 1.15.0,其他 TensorFlow 版本运行可能存在问题。.zip项目工程资源经过严格测试可直接运行成功且功能正常的情况才上传,可轻松复刻,拿到资料包后可轻松复现出一样的项目,本人系统开发经验充足(全领域),有任何使用问题欢迎随时与我联系,我会及时为您解惑,提供帮助。 【资源内容】:包含完整源码+工程文件+说明(如有)等。答辩评审平均分达到96分,放心下载使用!可轻松复现,设计报告也可借鉴此项目,该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的。 【提供帮助】:有任何使用问题欢迎随时与我联系,我会及时解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 下载后请首先打开README文件(如有),项目工程可直接复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值