Linux: встановити команду для локальних змінних


9

Я намагаюся зрозуміти локальні / середовищі змінних та експортувати / встановлювати команди.

$ set FILEM="razrax"
$ echo $FILEM

$ FILEN="test"
$ echo $FILEN
test

Поясніть, будь ласка, чому echo $FILEMповертає порожній рядок

Відповіді:


21

Ви плутаєте bashз csh.

В , bashяк і в будь-якому Bourne-подібні оболонок, setце команда набору опцій (параметри конфігурації оболонки подобаються -f, -C, -o noclobber...) і позиційні параметри ( $1, $2...).

set FILEM="razrax"

Набори $1для FILEM=razrax.

$ set FILEM="razrax"
$ echo "$1"
FILEM=razrax

Синтаксис присвоєння змінної в оболонках Борна:

VAR=value

(не допускається пробілів з обох боків від =).

kshта деякі інші оболонки Борна (mksh, pdksh, zsh) також можуть присвоювати змінні масиву, setхоча:

set -A array value1 value2

zsh, bash, yashІ нові версії kshвикористовувати цей синтаксис замість цього:

array=(value1 value2)

На відміну від цього, у cshабо tcshсинтаксисі є:

set VAR = value
set array = (value1 value2)

(пробіли навколо =необов’язково).

В rc/ esоболонках:

VAR = value
array = (value1 value2)

(пробіли навколо =необов’язково).


Дякую за гарну відповідь. Єдине, чого я не розумію, це те, чим відрізняються параметри benweet та локальні змінні "set - це команда встановити параметри"?
iJava

@iJava, set -Cвстановлює -Cпараметр (те саме, що set -o noclobber). set fooпризначає fooдо $1$#дорівнює 1, ( $2, $3прибираються якщо встановлено раніше)). Перегляньте посібник з оболонки для отримання детальної інформації.
Стефан Шазелас

1
Я не розумію, які варіанти ARE. Це параметри, які надсилаються таким програмам, як main (String [] args)? Або що? Де вони використовуються?
iJava

1
@iJava, це налаштування, які впливають на поведінку оболонки. Знову RTFM
Stéphane Chazelas
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.