我试图找出变量为什么不在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),它运行正常!
任何线索??
提前致谢。
答案 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在反引号命令中嵌入换行符有问题。如果第一行可以看作是一个完整的命令,它有时会将它视为两个单独的命令,而以|
开头的命令会导致问题。