变量内部的Bash shell变量

时间:2011-11-11 09:18:02

标签: bash shell variables if-statement

我很确定这可以做到,但我不太确定正确的语法是什么:

dev=$(someprog1 -flag -flag);
tpcli=$(someprog2 -flag);
if [[ $tpcli = $(someprog3 -flag $dev -flag | grep stuff | cut -c 25-55) ]]; then
blah;
blah;

基本上我想创建变量并将其添加到IF语句旁边的变量中。 任何帮助都会有很大的帮助。

2 个答案:

答案 0 :(得分:1)

我不太确定你在问什么,但是你所做的事情没有错(除了我在if子句中永远不会有子shell)。

bos@bos:$ foo=42
bos@bos:$ [ $foo = $(echo 42) ] && echo yes || echo no
yes
bos@bos:$ [ $foo = $(echo 242) ] && echo yes || echo no
no

答案 1 :(得分:0)

这通常有效;例如尝试

P=$(echo $PATH)

当有疑问时 - 使用$ {PATH}括号和/或转义“ - 用控制单个参数的空格或扩展的东西;并将其空格视为参数之间的分隔符。(其中如果我们假设我们没有文件名以及没有文件名,那么你的例子中不需要的方式。

作为一个更大的例子 - 考虑:

  #!/bin/sh
  dev=$(echo /dev/null)
  if [ $(cat $dev | wc -l) = "0" ]; then
      echo Fine
    exit 0
  else
      echo Now that is a surprize
  fi
  exit 1

当跑步时给我们

  beeb-2:~ dirkx$ sh xx.sh
  Fine

或更详细说明:

  beeb-2:~ dirkx$ sh -x xx.sh
  ++ echo /dev/null
  + dev=/dev/null
  ++ cat /dev/null
  ++ wc -l
  + '[' 0 = 0 ']'
  + echo Fine
  Fine
  + exit 0

这样可以帮助您找到问题。你确定没有空间或换位吗?