Shell会话变量未赋值



我试图弄清楚为什么变量没有在开发环境(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环境中执行了同样的操作(同样是AIX6.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在backtick命令中嵌入换行符时遇到了问题。如果第一行可以被视为一个完整的命令,它有时会将其视为两个单独的命令,而以|开头的命令会导致问题。

最新更新