初识shell

这篇文章只是记录自己初学shell的笔记,读者可以直接去看这篇文章Shell脚本编程30分钟入门

  • 变量赋值,等号周围不能有空格;定义变量不用$ 使用变量要加$

  • 作为可执行程序

chmod +x test.sh
./test.sh

注意,一定要写成./test.sh,而不是test.sh,运行其它二进制的程序也一样,直接写test.sh,linux系统会去PATH里寻找有没有叫test.sh的,而只有/bin, /sbin, /usr/bin,/usr/sbin等在PATH里,你的当前目录通常不在PATH里,所以写成test.sh是会找不到命令的,要用./test.sh告诉系统说,就在当前目录找。

  • IntelliJ IDEA编写shell script时,IDE就会提示变量加花括号。

  • 每一行加个#符号太费力了,可以把这一段要注释的代码用一对花括号括起来,定义成一个函数,没有地方调用这个函数,这块代码就不会执行,达到了和注释一样的效果。

  • 单引号和双引号区别:(和php类似)
    单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的
    单引号字串中不能出现单引号(对单引号使用转义符后也不行)
    双引号里可以有变量
    双引号里可以出现转义字符

  • 还要注意,sh里的if [ $foo -eq 0 ],这个方括号跟Java/PHP里if后面的圆括号大不相同,它是一个可执行程序(和cd, ls, grep一样),在CentOS上,它在/usr/bin目录下,正因为方括号在这里是一个可执行程序,方括号后面必须加空格,不能写成if [$foo -eq 0]

  • .和source的意思一样 . ./bin/startup.sh sh startup.sh

自动部署gradle项目代码到云主机

#!/bin/sh
cd /Users/gary/Documents/XXX
sh gradlew war

cd project_name/build/libs
scp project_name.war root@ip:~
ssh root@ip "cd /apps/svr/apache-tomcat-8.0.32/webapps;rm -f project_name.war;rm -rf project_name;mv ~/project_name.war project_name.war"

[参考]
Shell脚本编程30分钟入门
SSH 在本地执行远程机器上的命令

你可能感兴趣的:(Linux)