Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在bash脚本中设置变量_Bash_Shell - Fatal编程技术网

在bash脚本中设置变量

在bash脚本中设置变量,bash,shell,Bash,Shell,我有以下命令: 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。我试着把这行设置成一个变量。我试过引号、括号和反勾号,但运气不好 有谁能告诉我将其设置为变量的正确语法吗?如果希望在数组中存储更多列

我有以下命令:

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
。我试着把这行设置成一个变量。我试过引号、括号和反勾号,但运气不好


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

如果希望在数组中存储更多列,则应使用此语法(如果只有一个结果也很好):

$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 })
既然你要求:

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

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

您是在尝试将命令本身存储在变量中,以便稍后执行,还是在尝试将命令的输出存储在变量中?这对我来说是一个非常好的问题,请向我展示两者,因为我很有可能同时遇到这两种情况。谢谢你花宝贵的时间回复我~我找到了解决办法!
command="echo asdf"
result=$($command)
echo $result