9

我想用更干净、不那么难看的单线来完成测试:

#!/bin/bash
test -d "$1" || (echo "Argument 1: '$1' is not a directory" 1>&2 ; exit 1) || exit 1

# ... script continues if $1 is directory...

基本上我追求的是不重复的东西exit,最好不产生子外壳(因此看起来也不那么难看),但仍然适合一行。

4

1 回答 1

22

没有子外壳且不重复exit

test -d "$1" || { echo "Argument 1: '$1' is not a directory" 1>&2 ; exit 1; }

您可能还想参考分组命令

{}

{ list; }

在大括号之间放置一个命令列表会导致该列表在当前 shell 上下文中执行。没有创建子shell。列表后面的分号(或换行符)是必需的。

于 2013-10-22T10:32:17.043 回答