2011-05-02 55 views
2
sfdisk -D $val << EOF 
,,$type 
EOF 

如何在执行后检查其状态?不通过如果... $ ?,但通过disjunction ||。 我的意思是我可以做的folllowing: ls ||退出4 如果ls遇到错误,它将以代码4退出,但我怎么能在我的例子中做到这一点?多行命令和状态码

第二个问题是,如何在失败时执行多个命令?是这样的好吗?

`ls` || { echo "!!!"; exit 4 } 

谢谢!

回答

5

你实际上是在问两个不同的问题...

的回答第一个,是你把条件< < FOO部分后:

我使用& &这里轻松看到输出。但有了这个命令集:

# cat << EOF && (echo hi ; echo there) 
foo 
bar 
EOF 

你得到:

foo 
bar 
hi 
there 

回答你的第二个问题,你应该使用()S:

# bash -c 'exit 1' || (echo hi ; echo there) 
hi 
there 
+1

关于第二个问题:'()'将在一个子shell中运行其内容,这可能不是你想要的(例如退出,设置变量等将无法按预期工作)。相反,在命令:'bash -c'exit 1'||后面用'{}'加分号{回声你好;在那里回声; }' – 2011-05-02 16:07:40

+0

嗨。不能这样工作: 'sfdisk -D $ dev << EOF || {losetup -d $ dev;退出3} ,, $ fsys EOF' – azerIO 2011-05-02 16:29:59

+1

您需要';'之后3和} – 2011-05-02 16:38:01