本文会持续记录一些linux的坑,这些坑很多时候就会坑你几个小时!!!
执行.sh脚本
shell脚本中有时会包含export命令 用于修改环境变量的情景 java项目中有时就会通过某些脚本来初始化一些环境变量 例如modify_env.sh脚本包含
export java = /user/bin
sh
正常情况下 linux下执行一个shell脚本 使用
sh modify_env.sh
这种方式运行shell脚本程序时,系统将创建一个子shell。此时,系统中将有两个shell,一个是登录时系统启动的shell,另一个是系统为运行脚本程序创建的shell。当一个脚本程序运行完毕,它的脚本shell将终止,返回到执行该脚本之前的shell。
重点来了: 你在.sh脚本中修改的环境变量并不会影响到当前登陆窗口shell的环境变量
source
如果你使用
source modify_env.sh
那么此时当前窗口的shell的环境变量也被成功修改了
坑
很多时候 执行.sh脚本的时候都会跟nohup命令搭配使用
那么陷阱就是如果nohup sh modify_env.sh是没问题的
但是nohup source modify_env.sh就会报错 不信的人可以自己试一下啊 千万要注意这个陷阱
echo 命令
echo就是linux下的打印命令, 可以将变量,常量等输出到控制台. 常见用法:
1. 不加双引号 单引号
无法打印;(分号)
2. 加单引号
无法打印变量
3. 加双引号(推荐使用)
基本都可以打印 特殊符号注意使用转义符号
坑
当你要打印的变量是一个多行文本的时候, 例如该变量是一个mysql查询的返回,包含多条数据.
echo 直接打印多行变量:
结果为一行,没有换行
echo 通过双引号打印多行变量
多行变量显示正确的换行
如果你想通过echo命令,直接将内容存储到文件中,一定要用双引号,不然多行变成一行就完全用不了啦