Что происходит с аргументом в псевдониме после его использования один раз?

Почему это только print arg out?

 $ alias test="echo $1 $1 $1" $ test arg arg 

Это находится в GNU bash, версия 4.2.25 (1) -release (x86_64-pc-linux-gnu).

  • Попытка сделать псевдонимы, которые открывают последний измененный файл
  • су и смешение алиасов
  • Как использовать 'в псевдониме?
  • Трудный рекурсивный псевдоним bash? установить при первом использовании
  • Почему сглаживание над стандартными командами не рекомендуется?
  • расширение псевдонимов команды
  • zsh с аргументами
  • Как создать синоним псевдонима?
  • 2 Solutions collect form web for “Что происходит с аргументом в псевдониме после его использования один раз?”

    Перечислите псевдонимы с помощью команды alias после того, как вы определили этот псевдоним, и вы это четко поймете:

     alias test="echo $1 $1 $1" alias 

    Вывод:

     alias test='echo ' 

    Он просто расширяется до строки только с переменными, которые были определены во время выполнения. Так, например, это работает (Vvariable MY_VAR определяется):

     MY_VAR="foo" alias test="echo $MY_VAR $MY_VAR $MY_VAR" alias 

    Вывод:

     alias test='echo foo foo foo' 

    Вы можете заменить его функцией

     function test() { echo $1 $1 $1 } 

    Я сомневаюсь, что alias поддерживает $ 1, $ 2, … Его помощь держится молчанием.

    Поэтому я считаю, что ваш командный test arg расширяется, как echo $1 $1 $1 arg . Где $ 1 пуст, и вы получаете свой результат.

    Еще один пример:

     $ alias test='echo $1 $1 $1' $ test arg1 arg2 arg1 arg2 

    В приведенном выше примере выполняется test=... псевдонима test=... get, а чистый эффект – это то, что мы имеем псевдоним для команды echo . Мы можем увидеть этот эффект, когда мы запускаем командный test arg1 arg2 . Все, что мы делаем, это запустить echo и передать ему строки arg1 и arg2 .

     $ echo arg1 arg2 
    Linux и Unix - лучшая ОС в мире.