1# $NetBSD: varmod-exclam-shell.mk,v 1.4 2020/11/03 18:42:33 rillig Exp $ 2# 3# Tests for the :!cmd! variable modifier, which evaluates the modifier 4# argument, independent of the value or the name of the original variable. 5 6.if ${:!echo hello | tr 'l' 'l'!} != "hello" 7. error 8.endif 9 10# The output is truncated at the first null byte. 11# Cmd_Exec returns only a string pointer without length information. 12# Truncating the output is not necessarily intended but may also be a side 13# effect from the implementation. Having null bytes in the output of a 14# shell command is so unusual that it doesn't matter in practice. 15.if ${:!echo hello | tr 'l' '\0'!} != "he" 16. error 17.endif 18 19# The newline at the end of the output is stripped. 20.if ${:!echo!} != "" 21. error 22.endif 23 24# Only the final newline of the output is stripped. All other newlines are 25# converted to spaces. 26.if ${:!echo;echo!} != " " 27. error 28.endif 29 30# Each newline in the output is converted to a space, except for the newline 31# at the end of the output, which is stripped. 32.if ${:!echo;echo;echo;echo!} != " " 33. error 34.endif 35 36all: 37 @:; 38