问一个aix下shell脚本问题

wzzwt 2011-01-17 11:40:46
我目前使用的是5300-05-00版本,下面一段shell总是有问题,请各位帮忙看看
#!/bin/ksh
errnum=`awk '{print $1}' /home/oracle/errlg.txt`
echo $errnum
if [ -n $errnum ]; then
echo "hello!!!"
fi
报错2.sh[4]: test: 0403-004 Specify a parameter with this command.
这个文件为空或者不为空都报错,我是想判断如果这个文件取出的值不为空情况下,需要我操作东西(aix中if不为空是不是用-n表示,linux是可以通过这个代码的)
...全文
1265 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
converf 2011-01-27
  • 打赏
  • 举报
回复
楼上的你怎么问题那么多啊
wzzwt 2011-01-24
  • 打赏
  • 举报
回复
谢谢几位答复,我刚吃man test了一下:

-n String1

Returns a True exit value if the length of the String1 variable is

nonzero.

这个-n应该是返回的string的长度为非0则为true,我那么写应该没问题,但是总是报那个错,

我其实就是要用if判断取得值不为空then。。。。

我昨天给ibm800打电话,他们的support竟然告诉我说这是个bug?

我觉得他们说的有问题,所以才到论坛上来问。。

还请有aix shell经验多的朋友帮忙解决一下,多谢了
zwuxsxxuterw 2011-01-21
  • 打赏
  • 举报
回复
文件为空的时候,是会报这个错误的
要是文件没问题,报这个错误就难理解了
至于-n的用法问题,你不会man test么
frmqjqxrpqzg 2011-01-18
  • 打赏
  • 举报
回复
使用下面的例子吧,如果你不能把你自己的代码搞定:
#Begin Code
PASSWORD_FILE="/etc/passwd"
ls –l $PASSWORD_FILE > /dev/null 2>&1
if [[ $? != 0 ]]; then
print “$PASSWORD_FILE was not found"
exit

else
for username in $(cat $PASSWORD_FILE | cut -f1 -d
do
print $username
done
fi
freetstar 2011-01-18
  • 打赏
  • 举报
回复
学习了,原来是ksh和bash的不同
libingwai 2011-01-18
  • 打赏
  • 举报
回复
#!/bin/ksh
errnum=`awk '{print $1}' /home/oracle/errlg.txt`
echo $errnum
if [ !-d $errnum ]; then
echo "hello!!!"
fi
justkk 2011-01-17
  • 打赏
  • 举报
回复
lz的结贴率出奇的低。。
if [[ -n $errnum ]]
ryo2k3 2011-01-17
  • 打赏
  • 举报
回复
楼上正解,在默认的ksh中[]不支持空量判断,而[[ ]]的功能比[ ]强,支持更多的操作符。
linux默认的bash对[]的支持比ksh好

另据测试,如果用awk '{print $1}' /home/oracle/errlg.txt 取回的errnum非空,则脚本不报这个错
test: 0403-004 Specify a parameter with this command

1,194

社区成员

发帖
与我相关
我的任务
社区描述
该论坛主要探讨IBM AIX平台的安装、部署、应用开发等话题,并为网友们提供自由交流的平台。
社区管理员
  • IBM AIX社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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