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、できればサブシェルを生成しないものを求めています (その結果、見栄えも悪くなります) が、それでも 1 行に収まります。

4

1 に答える 1

22

サブシェルなしで複製なしexit:

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

Grouping Commandsも参照してください。

{}

{ list; }

中括弧の間にコマンドのリストを配置すると、リストが現在のシェル コンテキストで実行されます。サブシェルは作成されません。リストに続くセミコロン (または改行) は必須です。

于 2013-10-22T10:32:17.043 に答える