shell 编程小结
2014-03-06 17:01
417 查看
语法错误(一):
原因分析:
解决方法:sed
's/\r//' 原文件 >转换后文件
echo "Create the server`s workdir "
预防错误(二):
unexpected EOF while looking for matching ``'
解决方法: echo "Create the server workdir "
经典应用场景分析:
源码
用 $(( )) 做算术运算,里面的变量名前的取值符号$可省略。
语法错误(三):export: `dump/Android_Hi3716C_V200': not a valid identifier
export subdir=dtv kernel protocol codec graph guitool midp jsext dtvmx jvm shell mediaplayer dump/${REAL_MMCP_PLATFORM}
原因分析:
其实REAL_MMCP_PLATFORM打开后就是Android_Hi3716C_V200
解决方法:
export subdir=$(echo dtv kernel protocol codec graph guitool midp jsext dtvmx jvm shell mediaplayer dump/${REAL_MMCP_PLATFORM};)
使用一个echo回显命令来过渡一下
总是出现错误syntax error near unexpected token '$'\r''
原因分析:因为你所处理的文件换行符是dos格式的"\r\n" 可以使用cat -v 文件名 来查看换行符是否是,如果是上述的,则行结尾会是^m 需要转换成linux/unix格式的"\n" 具体转换办法就是转换换行符
解决方法:sed
's/\r//' 原文件 >转换后文件
echo "Create the server`s workdir "
预防错误(二):
unexpected EOF while looking for matching ``'
解决方法: echo "Create the server workdir "
经典应用场景分析:
源码
echo "This program will help you to calculate " echo "how many days before your birthday." read -p "input your birthday in the next year: " date1 #declare -i date_d=`date --date="$date1" +%d` declare -i date_s=`date --date="$date1" +%s` declare -i date_now=`date +%s` declare -i date_total_s=$(($date_s-$date_now)) declare -i date_df=$(($((date_total_s))/60/60/24)) if ["$(($date_s/3600/24))" -lt "$(($date_now/3600/24))"]; then echo "you have celebrated the birthday."
elif ["$(($date_s/3600/24" == "$(($date_now/3600/24))"]; then echo "happy birthday!" else echo "$date_df days left." #line 25 fi
错误:line 25:unexpected EOF while looking for matching '"'
原因分析:
if 判断表达式缺少必要的空格,方括号跟里面的表达式之间要有空格的。 -lt表示为数字比较,不需要加双引号,加了双引号表示字符串比较,字符串比较用= < >之类的比较符。 == 是C语法,shell语法对应的字符串比较操作符就是 = ;或者 外面的 [ ] 改为 [[ ]],就支持C语法了。
用 $(( )) 做算术运算,里面的变量名前的取值符号$可省略。
解决方法:
if
[ $((date_s
/3600/24
)) -lt $((date_now
/3600/24
)) ];
then
echo
"you have celebrated the birthday."
elif
[ $((date_s
/3600/24
)) -
eq
$((date_now
/3600/24
)) ];
then
echo
"happy birthday!"
else
echo
"$date_df days left."
#line 25
fi
语法错误(三):export: `dump/Android_Hi3716C_V200': not a valid identifier
export subdir=dtv kernel protocol codec graph guitool midp jsext dtvmx jvm shell mediaplayer dump/${REAL_MMCP_PLATFORM}
原因分析:
其实REAL_MMCP_PLATFORM打开后就是Android_Hi3716C_V200
解决方法:
export subdir=$(echo dtv kernel protocol codec graph guitool midp jsext dtvmx jvm shell mediaplayer dump/${REAL_MMCP_PLATFORM};)
使用一个echo回显命令来过渡一下
相关文章推荐
- linux脚本编程(shell)浅介
- linux shell脚本嵌套expect 实现远程ssh登入,传送文件
- Shell、归并排序、递归的java实现
- man bash 完全手册安装 / 查看函数原型
- 什么是Bash Shell的内建(build in)命令
- shell如何模块化和复用——shell深入学习
- 初次使用shell
- 两个文件的共同部分或者差异部分(基于shell命令)
- Linux-Shell之前基础
- bash大括号参数扩展(Parameter Expansion)
- 关于linux shell script if 语句特定参数的备忘
- linux ulimit命令参数及用法详解--linux限定shell启动进程资源
- 监控服务器swap并重启php的Shell脚本
- bash单引号,双引号妙解
- 通过shell进行数学运算的多种方式
- SHELL编程基本知识点一
- bash shell 合并文件
- vim config for C/C++/shell(ubuntu 12.04)
- hbase shell写错,回退功能设置
- Android自动化测试初探(五): 再述模拟键盘鼠标事件(adb shell 实现)