浅析busybox-1.12.0中ash的脚本命令局限性

来源:互联网 发布:win10 软件消失 编辑:程序博客网 时间:2024/05/21 22:42
http://www.cublog.cn/u1/38994/showart_1745642.html

LUTHER=
表示将LUTHER清空,将其变为null
echo ${LUTHER:-111}如果执行该句之前LUTHER变量不存在,那么显示111,否则显示$LUTHER
echo ${LUTHER:=111}如果执行该句之前LUTHER变量不存在,那么显示111,同时将111赋值给LUTHER,就此创建变量LUTHER变 量,否则显示$LUTHER
echo ${LUTHER:+111}如果执行该句之前LUTHER变量不存在,那么显示null空,否则显示111

1.不支持[[ ]]和(( ))条件判断,支持最平常的[ ]判断,[[]]是从bash2.02开始引入的
if [[ $1 >= $2 ]]; then
if [[ 1 >= 2 ]]; then
2.不支持数组
3.支持字符串扩展b={$a,"1 2 3 4","a b c d"}必须用逗号隔开
4.支持命令块{ echo 'a'; echo 'b'; }
5.子shell中执行的命令块(echo 'a'; echo 'b')
6.busybox函数返回数值$?可以支持到2G即2147483647,而在pc上$?最大为255
7.busybox有$RANDOM系统变量,没有$SECONDS变量
8.不支持exec 9<&0 <struct.c操作,即输入到0描述符的操作,只支持1,和2操作符exec
9.对于数字操作只能使用expr,不能使用let,也不能使用(())双括号
expr [数字] [操作符] [数字]
下面是有效的算术操作符:
+   两个整数相加
-   第一个数减去第二个数
*   两整数相乘
/   第一个整数除以第二个整数
%   两整数相除,取余数  
10.支持getopts,$OPTARG和$OPTIND
11.${*:2},${@:2}和${*:2:3}等参数提取方式不支持
12.不支 持${string:position}...${string/substring/replacement}等字符串操作
13.支 持${#string}字符串长度提取和${string#substring}
0 0