Shell会话变量不分配值

时间:2013-12-05 14:00:49

标签: variables sh aix

我试图找出变量为什么不在dev环境中存储下面命令的值(AIX 6.1):

> DBSIZE=`db2 "CALL GET_DBSIZE_INFO(?, ?, ?, 0)" | grep -p DATABASESIZE
> | grep Value | cut -c21-`

如果我执行echo $DBSIZE,它将检索空白,没有任何值。

但是,当我只运行命令

db2 "CALL GET_DBSIZE_INFO(?, ?, ?, 0)" | grep -p DATABASESIZE | grep Value | cut -c21-

它检索值。

另外,我在prod环境中也执行了相同的操作(也是AIX 6.1),它运行正常!

任何线索??

提前致谢。

1 个答案:

答案 0 :(得分:1)

不能告诉你确切的问题是什么,但如果你把它分解成几个部分,你至少可以找出它出错的地方:

DBSIZE=`db2 "CALL GET_DBSIZE_INFO(?, ?, ?, 0)"`
echo "$DBSIZE"
DBSIZE=`db2 "CALL GET_DBSIZE_INFO(?, ?, ?, 0)" | grep -p DATABASESIZE`
echo "$DBSIZE"
DBSIZE=`db2 "CALL GET_DBSIZE_INFO(?, ?, ?, 0)" | grep -p DATABASESIZE | grep Value`
echo "$DBSIZE"

等等。

想要尝试的一件事(如果该命令真正按行显示分割)是在一行上放置的。我似乎记得有些shell在反引号命令中嵌入换行符有问题。如果第一行可以看作是一个完整的命令,它有时会将它视为两个单独的命令,而以|开头的命令会导致问题。