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