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

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

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

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

  • Как я могу использовать псевдоним `!!` (последняя команда)?
  • Что такое псевдоним?
  • Как сделать работу с псевдонимами на других терминалах
  • Создание команд с переменным расширением в цикле
  • Имеет ли tcsh эквивалент «$ {a: -b}» для назначения переменной по умолчанию, например Bash?
  • Как вы выполняете псевдоним или функцию, которая сохраняет вкладку?
  • су и смешение алиасов
  • Специальные символы в псевдониме
  • 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 - лучшая ОС в мире.