我很确定这可以做到,但我不太确定正确的语法是什么:
dev=$(someprog1 -flag -flag);
tpcli=$(someprog2 -flag);
if [[ $tpcli = $(someprog3 -flag $dev -flag | grep stuff | cut -c 25-55) ]]; then
blah;
blah;
基本上我想创建变量并将其添加到IF语句旁边的变量中。 任何帮助都会有很大的帮助。
答案 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
这样可以帮助您找到问题。你确定没有空间或换位吗?