shell编程注意点
2015-06-29 22:55
721 查看
1、标准输入输出转存不能随便用,例如:
echo "export PATH=/home/huangmr/jdk/bin:\$PATH" >> /home/huangmr/.bash_profile 1>>/home/huangmr/mysql_install.log 2>&1
上面这句话本来是希望能够往/home/huangmr/.bash_profile文件中插入export PATH=/home/huangmr/jdk/bin:$PATH这句话($PATH前的反斜线是为了原样输出$PATH),而将标准输入转存到了mysql_install.log,再把标准错误输出也转存到mysql_install.log中,实际上不会往/home/huangmr/.bash_profile文件中插入export PATH=/home/huangmr/jdk/bin:$PATH,而是把export
PATH=/home/huangmr/jdk/bin:$PATH也输出到了mysql_install.log中。
2、if判断中,一定一定要注意,如果使用=进行判断,=左右都要有空格,否则if会认为判断语句中就是一个字符串而只会认为是“真”,如下例:
等号左右没有空格,不论flag值是什么,结果都是equal。
如果再等号左右加上空格,上面的执行结果就是not equal。
echo "export PATH=/home/huangmr/jdk/bin:\$PATH" >> /home/huangmr/.bash_profile 1>>/home/huangmr/mysql_install.log 2>&1
上面这句话本来是希望能够往/home/huangmr/.bash_profile文件中插入export PATH=/home/huangmr/jdk/bin:$PATH这句话($PATH前的反斜线是为了原样输出$PATH),而将标准输入转存到了mysql_install.log,再把标准错误输出也转存到mysql_install.log中,实际上不会往/home/huangmr/.bash_profile文件中插入export PATH=/home/huangmr/jdk/bin:$PATH,而是把export
PATH=/home/huangmr/jdk/bin:$PATH也输出到了mysql_install.log中。
2、if判断中,一定一定要注意,如果使用=进行判断,=左右都要有空格,否则if会认为判断语句中就是一个字符串而只会认为是“真”,如下例:
flag=108 if [ "${flag}X"="X" ] then echo "equal" else echo "not equal" fi
等号左右没有空格,不论flag值是什么,结果都是equal。
如果再等号左右加上空格,上面的执行结果就是not equal。
相关文章推荐
- shell编程注意点
- Linux bashrc与profile的区别
- mysql备份单实例(一)shell
- linux shell-syntax error near unexpected token错误
- shell学习之路:流程控制(if)
- ubuntu(linux)下source、sh、bash、./执行脚本的区别
- shell中的大括号,小括号语法分别概述
- PASSION之初始SHELL
- Shell技巧
- WinAPI: ShellExecute - 打开外部程序或文件
- shell学习三十二天----read读取一行
- Execute Shell Script 正常, 但 Crontab execute fail
- 一波实用的Bash Shell整理
- Linux常用的shell命令
- 用ShellExecuteEx和TerminateProcess打开和关闭文件
- 用shell脚本生成日志文件
- linux下shell显示-bash-4.1#不显示路径解决方法
- 登录shell与非登录shell读取文件过程
- Shell脚本实现的基于SVN的代码提交量统计工具
- shell脚本(一)