小白学习bash,遇到问题了,求帮忙
时间:2011-07-04
来源:互联网
代码是在公司写的,带不回来,我重写一下
是一个简单的循环队列
#!/bin/bash
MAX_N=20
DIR_QUEUE[$MAX_N]
FRONT=0
TAIL=0
push_back()
{
for ARG in "$@"
do
DIR_QUEUE[$TAIL]=$ARGle
let "TAIL=($TAIL+$MAX_N+1)%$MAX_N
done
}
pop_front()
{
index=-1
if [[ $FRONT -ne $TAIL ]]
then
let "index=$FRONT"
let "FRONT=($FRONT+$MAX_N+1)%$MAX_N
fi
return $index
}
push_back AAA
push_back BBB
问题就出现在下面
---------------------------------------------------------------------------
pop_front
if [[ $? -ne -1 ]]
then
echo ${DIR_QUEUE[$?]}
fi
pop_front
echo ${DIR_QUEUE[$?]
这样会输出
AAA
BBB
----------------------------------------------------------------------------
pop_front
if [[ $? -ne -1 ]]
then
echo ${DIR_QUEUE[$?]}
fi
pop_front
if [[ $? -ne -1 ]]
then
echo ${DIR_QUEUE[$?]
fi
这样就输出(只是多加了一个判断么)
AAA
AAA
----------------------------------------------------------------------------
把pop_front里面改成标准输出 ,对面用 echo $(pop_front)
echo $(pop_front)
输出也全是AAA
搞了几个小时也不明白怎么回事,迷茫中,望指教
是一个简单的循环队列
#!/bin/bash
MAX_N=20
DIR_QUEUE[$MAX_N]
FRONT=0
TAIL=0
push_back()
{
for ARG in "$@"
do
DIR_QUEUE[$TAIL]=$ARGle
let "TAIL=($TAIL+$MAX_N+1)%$MAX_N
done
}
pop_front()
{
index=-1
if [[ $FRONT -ne $TAIL ]]
then
let "index=$FRONT"
let "FRONT=($FRONT+$MAX_N+1)%$MAX_N
fi
return $index
}
push_back AAA
push_back BBB
问题就出现在下面
---------------------------------------------------------------------------
pop_front
if [[ $? -ne -1 ]]
then
echo ${DIR_QUEUE[$?]}
fi
pop_front
echo ${DIR_QUEUE[$?]
这样会输出
AAA
BBB
----------------------------------------------------------------------------
pop_front
if [[ $? -ne -1 ]]
then
echo ${DIR_QUEUE[$?]}
fi
pop_front
if [[ $? -ne -1 ]]
then
echo ${DIR_QUEUE[$?]
fi
这样就输出(只是多加了一个判断么)
AAA
AAA
----------------------------------------------------------------------------
把pop_front里面改成标准输出 ,对面用 echo $(pop_front)
echo $(pop_front)
输出也全是AAA
搞了几个小时也不明白怎么回事,迷茫中,望指教
作者: 丿相当低调 发布时间: 2011-07-04
$? -ne -1
$?的值为0-255
$?的值为0-255
作者: waker 发布时间: 2011-07-05
本帖最后由 li2002 于 2011-07-05 09:24 编辑
复制代码
你应该知道$?的意思吧,是上一条命令的处理结果,所以上面的两个$?就不是同一个意思了,${DIR_QUEUE[$?]中的$?是if命令的处理结果,就是0,不是你想要的pop_front的结果index
- pop_front
- if [[ $? -ne 255 ]]
- then
- echo ${DIR_QUEUE[$?]
- fi
作者: li2002 发布时间: 2011-07-05
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28