Robert Elz wrote in <14146.1724799...@jacaranda.noi.kre.to>: | Date: Tue, 27 Aug 2024 22:02:34 +0200 | From: Steffen Nurpmeso <stef...@sdaoden.eu> | Message-ID: <20240827200234.95X76_wN@steffen%sdaoden.eu> | | || Any character in IFS delimits a field, adjacent IFS whitespace || characters are then ignored. | |Not quite. Any sequence of any amount of IFS whitespace, and no |more than one other IFS character delimits a field.
That confuses me again, unfortunately i got a bug report and distracted. I mean, i would 1. skip leading whitespace anyhow (IFS or not, which is a "documented bug" here i would say), for the shell this would be: leading IFS whitespace, 2. pass by none-to-many non-IFS bytes, the "field data", then 3. a. if there is a non-IFS-whitespace character: - delimit the field, even with empty "field data", b. if there is a IFS-whitespace character: - delimit the field only with non-empty "field data", 4. skip trailing (new leading) (IFS-) whitespace || To the contrary i would now say that with a non-default non-empty || $IFS only IFS characters that are not also IFS whitespace create || empty fields. | |The preconditions there are irrelevant. |Only IFS chars that are not IFS whitespace create empty fields. Yes. |Where IFS is empty, there are no IFS chars, hence nothing delimits |a field. When IFS is unset (default case) it consists of $' \t\n' |(there is no difference whatever, for field splitting, or "$*" for |that matter) between an unset IFS and IFS=$' \t\n' | |||You have to look at the definition of IFS whitespace. || Already forgotten at that point. | |Unfortunately, when reading the standard, you cannot forget a |single word of it. Everything (normative) applies. --steffen | |Der Kragenbaer, The moon bear, |der holt sich munter he cheerfully and one by one |einen nach dem anderen runter wa.ks himself off |(By Robert Gernhardt)