Note that this only applies to variables that are actually used.
Things like (0 && unsetvar) do not cause an error.
Obtained-from: FreeBSD SVN rev 221463
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $FreeBSD: src/bin/sh/arith_yacc.c,v 1.3 2011/03/05 13:27:13 jilles Exp $
+ * $FreeBSD: src/bin/sh/arith_yacc.c,v 1.4 2011/05/04 22:12:22 jilles Exp $
*/
#include <sys/limits.h>
arith_t result;
str = lookupvar(varname);
+ if (uflag && str == NULL)
+ yyerror("variable not set");
if (str == NULL || *str == '\0')
str = "0";
errno = 0;
--- /dev/null
+# $FreeBSD: src/tools/regression/bin/sh/expansion/set-u3.0,v 1.1 2011/05/04 22:12:22 jilles Exp $
+
+set -u
+unset x
+v=$( (eval ': $((x))') 2>&1 >/dev/null)
+[ $? -ne 0 ] && [ -n "$v" ]