0

我有以下命令:

echo "exec [loc_ver].[dbo].[sp_RptEmpCheckInOutMissingTime_2]" |
  /home/mdland_tool/common/bin/run_isql_prod_rpt_2.sh |
  grep "^| Row_2" |
  awk '{print $15 }'

仅适用echo于前面。我试图将此行设置为变量。我试过引号、括号和反引号,但没有成功。

谁能告诉我将其设置为变量的正确语法?

4

3 回答 3

0
$result=$(exec [loc_ver].[dbo].[sp_RptEmpCheckInOutMissingTime_2]" | /home/mdland_tool/common/bin/run_isql_prod_rpt_2.sh | grep "^| Row_2" | awk '{print $15 })
于 2013-04-11T14:59:36.240 回答
0

如果你想在一个数组中存储更多列,你应该使用这种语法(如果你只有一个结果也很好):

#!/bin/bash
result=( $( echo "exec [loc_ver].[dbo].[sp_RptEmpCheckInOutMissingTime_2]" |
/home/mdland_tool/common/bin/run_isql_prod_rpt_2.sh |
grep "^| Row_2" |
awk '{print $15 }' ) )
于 2013-04-11T15:14:09.680 回答
0

由于您询问了问题的两种含义

首先,想象一个更简单的情况:

echo asdf

如果要执行此命令并将结果存储在某处,请执行以下操作:

$(echo asdf)

例如:

variable=$(echo asdf)
# or
if [ "$(echo asdf)" == "asdf" ]; then echo good; fi

所以一般来说,$(command)执行command并返回输出。

如果你想存储命令本身的文本,你可以这样做:

variable='echo asdf'
# or
variable="echo asdf"
# or
variable=echo\ asdf

不同的格式取决于您的命令内容。因此,现在一旦有了存储命令的变量,就可以简单地使用$(command)语法执行命令。但是,请注意命令本身是在一个变量中。因此,您将通过以下方式执行命令:

$($variable)

作为一个完整的例子,让我们将两者结合起来:

command="echo asdf"
result=$($command)
echo $result
于 2013-04-11T16:06:25.410 回答