您的位置:首页 > 运维架构 > Shell

初识shell

2016-06-02 22:12 531 查看
这篇文章只是记录自己初学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 在本地执行远程机器上的命令
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: