В чем разница между объявлением и набором

Может ли кто-нибудь объяснить разницу между объявлением и набором с примерами реальной жизни.

  • Bash: передача фигурных скобок в качестве аргументов функции bash
  • Вычислить средний размер файла
  • Команды VIM для скриптов Bash
  • 'echo' ест часть сообщения
  • Как обрабатывать пробелы в именах путей, когда переменная содержит несколько путей
  • Как удалить цветовые коды из stdout и pipe в файл и stdout
  • В чем разница между & 6 и / dev / fd / 6?
  • Curl url txt file, но grep каждый URL отдельно от одного файла
  • Функция проверки переменной BASH
  • Понимание перенаправленного if-утверждения в bash
  • Как открыть файл с заменой процесса из php?
  • Каков наилучший способ сделать функцию bash в скрипте в качестве параметра при запуске через командную строку?
  • 2 Solutions collect form web for “В чем разница между объявлением и набором”

    В bash , typeset и declare точно такие же. Единственное отличие состоит в том, что typeset считается устаревшим.

     typeset: typeset [-aAfFgilrtux] [-p] name[=value] ... Set variable values and attributes. Obsolete. See `help declare'. 

    Страница руководства даже перечисляет их на одном дыхании:

     declare [-aAfFgilrtux] [-p] [name[=value] ...] typeset [-aAfFgilrtux] [-p] [name[=value] ...] Declare variables and/or give them attributes. 

    typeset ksh93 переносится на некоторые другие оболочки, например, ksh93 . Если вы нацелены на переносимость кросс-оболочек, используйте typeset (и убедитесь, что способ, которым вы его вызываете, переносится). Если вам не нужна такая переносимость, используйте declare .

    Я знаю случай, когда declare полезно, чтобы избежать зла eval : переменная косвенность :

     $ var=foo $ x=var $ declare "$x=another_value" $ echo $var another_value 
    Linux и Unix - лучшая ОС в мире.