2014-09-26 3 views
4

В Bash, вы можете создать read-only variableКак я могу создать «переменную только для чтения»?

declare -r somevar='bla' 

Я пытался найти что-то подобное в POSIX sh, но единственное, что приходит близко это фраза в set documentation:

[.. .] переменные только для чтения не могут быть сброшены.

Как создать такую ​​переменную только для чтения?

+1

http://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html#tag_18_23 – jlliagre

+1

Хммм. Сегодня мой Google-фу провалил меня. – rubenvb

ответ

5

Вы можете использовать readonly:

$ var="hello" 
$ readonly var 
$ echo $var 
hello 
$ var="bye" 
sh: var: readonly variable 
+1

Я нашел [это также] (https://wiki.ubuntu.com/DashAsBinSh#declare_or_typeset), но не могу найти его в спецификации POSIX. Поэтому я считаю, что это тоже расширение. Я вижу, что это [не присутствует в некоторых оболочках] (http://hyperpolyglot.org/unix-shells#variables). – rubenvb

+1

ОК, @jlliagre указал мне на [spec] (http://pubs.opengroup.org/onlinepubs/007904875/utilities/readonly.html), который, по-видимому, не удалось выполнить Google. Где я могу найти отчеты об ошибках для поиска в Google? :-p – rubenvb

+0

Ха-ха, обходное решение имеет кофе :) Исходя из этой ссылки, он присутствует в спецификации. Достаточно ли это или это расширение? Мне это непонятно. – fedorqui

Смежные вопросы