ALT Linux Community general discussions
 help / color / mirror / Atom feed
From: Maksim Otstavnov <maksim@otstavnov.com>
To: community@lists.altlinux.org
Subject: Re: [Comm] sh - bash
Date: Sun, 15 Oct 2006 14:55:03 +0400
Message-ID: <1242923031.20061015145503@otstavnov.com> (raw)
In-Reply-To: <20061015072634.GA7677@procyon.home>

Hello Sergey,

Sunday, October 15, 2006, 11:26:34 AM, you wrote:

SV> Правда, в стандарте есть одна проблема: там написано, что $(($x) и
SV> $((x)) должны работать одинаково, но возможность использовать
SV> переменные без $ в произвольных выражениях явно не прописана;

Так а второе из первого не следует. Я бы исходил из того, что такой
возможности нет.

SV> в результате существуют варианты /bin/sh, для которых заявлена
SV> совместимость с POSIX, но выражения вида $((A+B)) там не работают.
SV> Использование же конструкций вида $(($A+$B)) потенциально опасно,
SV> если переменные могут содержать непроверенные данные, не являющися
SV> целыми числами.

А чем бы помогло " $((A+B))"?

Кстати, и для раскрытия одной одвускобленной переменной написано, что
"*If the shell variable x contains a value that forms a valid integer
constant*, then the arithmetic expansions "$((x))" and "$(($x))" shall
return the same value" (Ibid., 2.3.6).

Не вполне понятно, как должна вести себя оболочка при нецелом или
нечисловом значении x; вполне возможно, что последнее предложение в
следующем за процитированным абзаце ("If the expression is invalid,
the expansion fails and the shell shall write a message to standard
error indicating the failure") просто забили отбить абзацем, и оно
относится к любому арифметическому раскрытию, а не только к случаям
поддержки нестандартных операций или иных типов переменных, о которых
говорится в сем абзаце.

Я, по крайней мере, столкнувшись некоторое время назад с этим
вопросом, понял это так: и "$((x))", и "$(($x))" при неподдерживаемом
арифметическом типе x или нечисловом x _должны_ (SHALL) вызывать
ошибку раскрытия. Есть другие идеи?

PS: А опечаток-то в тексте 2004 г.... :(

-- 
-- Maksim




  parent reply	other threads:[~2006-10-15 10:55 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-10-14 21:57 Artem Zolochevskiy
2006-10-14 22:27 ` Alexey Rusakov
2006-10-15  5:41   ` Artem Zolochevskiy
2006-10-15  6:13     ` Alexey Rusakov
2006-10-15  8:41     ` Andrey Rahmatullin
2006-10-15  8:56       ` Artem Zolochevskiy
2006-10-15  9:03         ` Andrey Rahmatullin
2006-10-14 22:50 ` Pavel Usischev
2006-10-15  5:53   ` Artem Zolochevskiy
2006-10-15  5:57     ` Artem Zolochevskiy
2006-10-15  7:26     ` Sergey Vlasov
2006-10-15  7:43       ` Artem Zolochevskiy
2006-10-15 11:31         ` Dmitry V. Levin
2006-10-18 12:01           ` Fr. Br. George
2006-10-15 17:55         ` [Comm] heirloom toolchest Michael Shigorin
2006-10-15 10:55       ` Maksim Otstavnov [this message]
2006-10-15 17:52     ` [Comm] sh - bash Michael Shigorin
2006-10-15 17:48   ` Michael Shigorin

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1242923031.20061015145503@otstavnov.com \
    --to=maksim@otstavnov.com \
    --cc=community@lists.altlinux.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link

ALT Linux Community general discussions

This inbox may be cloned and mirrored by anyone:

	git clone --mirror http://lore.altlinux.org/community/0 community/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 community community/ http://lore.altlinux.org/community \
		mandrake-russian@linuxteam.iplabs.ru community@lists.altlinux.org community@lists.altlinux.ru community@lists.altlinux.com
	public-inbox-index community

Example config snippet for mirrors.
Newsgroup available over NNTP:
	nntp://lore.altlinux.org/org.altlinux.lists.community


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git