shell语句

挣扎中前行 2013-03-29 09:48:19
if [ "$pkgname" == "${array[0]}" ];then

这个判断语句有问题吗?俩个变量的值一样而且长度也一样为什么进步来呢?
...全文
127 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
挣扎中前行 2013-03-29
  • 打赏
  • 举报
回复
引用 10 楼 KuaiPengFei_ 的回复:
我不知道你用的啥shell 我的加不加冒号都行啊 也能比较啊
解决了谢啦!字符串变量里有个空格但echo时好像自动剔除了所以一直不过!
Joseph_ 2013-03-29
  • 打赏
  • 举报
回复
我不知道你用的啥shell 我的加不加冒号都行啊 也能比较啊
Joseph_ 2013-03-29
  • 打赏
  • 举报
回复
#! /bin/bash arr=(111 222 123 123) test="123" T="123" TT="1234" echo ${arr[2]} if [ ${test} -eq "${arr[2]}" ] then echo "OK" fi 这样也行啊!
挣扎中前行 2013-03-29
  • 打赏
  • 举报
回复
引用 7 楼 KuaiPengFei_ 的回复:
#! /bin/bash test="123" T="123" if [ ${test} == ${T} ] then echo "OK" fi
没错这是对的,用数组就不对啦!!
Joseph_ 2013-03-29
  • 打赏
  • 举报
回复
#! /bin/bash test="123" T="123" if [ ${test} == ${T} ] then echo "OK" fi
挣扎中前行 2013-03-29
  • 打赏
  • 举报
回复
引用 4 楼 KuaiPengFei_ 的回复:
if [ "$pkgname" == "${array[0]}" ];then 去掉冒号吧: if [ $pkgname == ${array[0]} ];then
确实是这样!数组下标固定可以,但要使用$i!取arry[$i]数组的值,去掉双引号会报"期待一元表达式"的错
Joseph_ 2013-03-29
  • 打赏
  • 举报
回复
引用 4 楼 KuaiPengFei_ 的回复:
if [ "$pkgname" == "${array[0]}" ];then 去掉冒号吧: if [ $pkgname == ${array[0]} ];then
然后变量用$引用的时候最好带括号
Joseph_ 2013-03-29
  • 打赏
  • 举报
回复
if [ "$pkgname" == "${array[0]}" ];then 去掉冒号吧: if [ $pkgname == ${array[0]} ];then
挣扎中前行 2013-03-29
  • 打赏
  • 举报
回复
#!/bin/sh

tmpfile="tmp"
if [ "$#" -ge "2" ];then
	diff -f $1 $2 > $tmpfile
else
	echo "use: $0 file1 file2"
fi

rm -rf k686-feed
mkdir k686-feed
uplist="k686-feed/update.list"
Package="k686-feed/Packages"

i=0
while read line  
do   
	fileline=`echo $line|awk -F ':' '{print $1}'`	
	filename=`echo $line|awk -F ':' '{print $2}'`	
	if [ "$fileline" == "Filename" ];then
		if [ "$filename" != "" ];then
			pkgname=`echo $filename|awk -F '_' '{print $1}'`	
			if [ "$pkgname" != "" ];then
				array[i]="$pkgname"
				let i++
			fi
		fi
	fi
done < $tmpfile 

len=$i
i=0
while [ $i -lt $len ]; do
	echo "$i: ${array[$i]}"
	let i++
done

i=0
fileline=""
pkgname=""
while read line
do
	fileline=`echo $line|awk -F ':' '{print $1}'`	
	if [ "$fileline" == "Package" ];then
		pkgname=`echo $line|awk -F ':' '{print $2}'`
		if [ "$pkgname" == ${array[$i]} ];then//问题在这!!
			echo "!!!!!!!!!$pkgname"
			echo $line >> $uplist
			flag="start"
			let i++
		else
		#	continue
			break
		fi
	fi

	if [ "$fileline" == "Version" ] && [ "$flag" == "start" ];then
		echo $line >> $uplist
	fi

	if [ "$fileline" != "" ] && [ "$flag" == "start" ];then
		echo $line >> $Package
	else
		flag="end"
	fi	
	
done < $2
挣扎中前行 2013-03-29
  • 打赏
  • 举报
回复
引用 1 楼 justkk 的回复:
跟踪调试一下 要不你直接试试 if [ "123" == "123" ]; then echo "aa" fi
这肯定是对的!
justkk 2013-03-29
  • 打赏
  • 举报
回复
跟踪调试一下 要不你直接试试 if [ "123" == "123" ]; then echo "aa" fi

23,121

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧