diff --git a/1988/dale/README.md b/1988/dale/README.md index 88ab3dd5b..f1c98e611 100644 --- a/1988/dale/README.md +++ b/1988/dale/README.md @@ -19,20 +19,21 @@ For more detailed information see [1988 dale in bugs.md](/bugs.md#1988-dale). ### Try: ```sh -./dale hello world -./dale these files are in this directory: * +./try.sh ``` -What do the following commands do and why do they do it? Why do they differ in -format from the above command? Finally how can you get the more likely desired -behaviour? - +Observe that three of the commands in the script are: ```sh +./dale these files are in this directory: * ./dale $(printf "the following files exist in this directory:\n%s\n" *) ./dale "$(printf "the following files exist in this directory:\n%s\n" *)" ``` +As the script asks what do the last two do and why do they do it? Why do they +differ in format from the first command? Finally how can you get the more likely +desired behaviour? + ## Judges' remarks: diff --git a/1988/dale/try.sh b/1988/dale/try.sh new file mode 100755 index 000000000..132abe136 --- /dev/null +++ b/1988/dale/try.sh @@ -0,0 +1,48 @@ +#!/usr/bin/env bash +# +# try.sh - demonstrate IOCCC winner 1988/dale +# + +# make sure CC is set so that when we do make CC="$CC" it isn't empty. Doing it +# this way allows us to have the user specify a different compiler in an easy +# way. +if [[ -z "$CC" ]]; then + CC="cc" +fi + +make CC="$CC" all >/dev/null || exit 1 + +# clear screen after compilation so that only the entry is shown +clear + +read -r -n 1 -p "Press any key to run: ./dale hello world: " +echo 1>&2 +./dale "hello world" +echo 1>&2 + +read -r -n 1 -p "Press any key to run: ./dale these files are in this directory: *: " +echo 1>&2 +# SC2035 (info): Use ./*glob* or -- *glob* so names with dashes won't become options. +# shellcheck disable=SC2035 +./dale these files are in this directory: * +echo 1>&2 + +echo "For the next two commands, ask yourself what they do and why they do it." 1>&2 +echo "Why do they differ in the format from the above command? Finally how can you" 1>&2 +echo "get the more likely desired behaviour?" 1>&2 +echo 1>&2 +echo 1>&2 +echo "$ ./dale \$(printf "the following files exist in this directory:\\n%s\\n" *)" +read -r -n 1 -p "Press any key to continue: " +echo 1>&2 +# SC2046 (warning): Quote this to prevent word splitting. +# shellcheck disable=SC2046 +./dale $(printf "the following files exist in this directory:\n%s\n" *) +echo 1>&2 + +echo "$ ./dale \"\$(printf \"the following files exist in this directory:\\n%s\\n\" *)\"" +read -r -n 1 -p "Press any key to continue: " +echo 1>&2 +./dale "$(printf "the following files exist in this directory:\n%s\n" *)" +echo 1>&2 + diff --git a/thanks-for-help.md b/thanks-for-help.md index 94cc8ad11..b4855ce87 100644 --- a/thanks-for-help.md +++ b/thanks-for-help.md @@ -675,6 +675,8 @@ macro in place it's just no longer used. See the README.md file for details on the original code, provided as an alt version in case you have an older compiler or wish to try `-traditional-cpp`. +Cody also provided the [try.sh](/1988/dale/try.sh) script. + ## [1988/isaak](/1988/isaak/isaak.c) ([README.md](/1988/isaak/README.md]))