lz是新手,本文主要记录个人在写脚本文件过程中遇到的问题和需要注意的事项,会持续更新,和大家共同学习~
1. 循环
参考链接——for/while/until循环的简介
https://blog.csdn.net/taiyang1987912/article/details/38929069
2. 字符串拼接
参考链接——各种拼接方式介绍比较全面
http://c.biancheng.net/view/1114.html
注意事项:
(1)shell中字符串拼接不能嵌套,命名不能加空格,如下的两种写法都是错的
outVideoName = ${VideoName}_out.mp4
inputPath=/home/ly/dataset/wild/${VideoName}/${ outVideoName}
正确写法是:
outVideoName=${VideoName}_out.mp4
inputPath=/home/ly/dataset/wild/${VideoName}/${VideoName}_out.mp4
(2)变量的书写方式
如果只是在命令中使用变量$VideoName
即可,但是如果在字符串拼接的过程中,尤其是变量名和字符串拼接时,变量名一定要用花括号括起来${VideoName}
3. sh文件的运行
sh脚本文件有四种运行方式,总体的介绍可以参考链接,本文仅对四种方式做简要总结。
参考链接:https://blog.csdn.net/u012336923/article/details/50474692/
(1) sh test.sh ——使用sh这种shell执行
(2) bash test.sh ——使用/bin/bash这种shell执行
(3) ./test.sh ——使用bin/bash执行,但是使用前需要为文件添加执行的权限
$ chmod +x test.sh
(4) $ source test.sh ——在父进程中执行,tesh.sh中的操作会在原本的shell内生效,所以想在不注销系统的情况下让写入~/.bashrc的设置生效需要使用source ~/.bashrc,而不是bash ~/.bashrc
【备注】前三种方法是在一个新的shell环境中执行脚本的命令,也即使用这3种方式,script是在子进程的shell内执行,子进程完成后,子进程内的各项变量和操作都会结束而不会传回到父进程中。此外,这三种方法需要的shell环境有一定区别,某一个不行可以换一个试试。