我想用一个更干净,不那么丑陋的单行程来完成测试:
#!/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...
Run Code Online (Sandbox Code Playgroud)
基本上我是在追求不重复的东西exit,最好不会产生子壳(因此看起来也应该看起来不那么难看),但仍然适合一行.
dev*_*ull 21
没有子shell而没有重复exit:
test -d "$1" || { echo "Argument 1: '$1' is not a directory" 1>&2 ; exit 1; }
Run Code Online (Sandbox Code Playgroud)
您可能还想参考分组命令:
{}Run Code Online (Sandbox Code Playgroud){ list; }在大括号之间放置命令列表会导致列表在当前shell上下文中执行.没有创建子shell.以下列表中的分号(或换行符)是必需的.