Расширение `$` идет с `*` и `@`

avatar
AbstProcDo
8 апреля 2018 в 11:00
54
1
1

Я изучаю расширение bash.

Существует три типа расширений, связанных с $

  1. Расширение параметров
  2. Подстановка команд
  3. Арифметическое расширение.

Я экспериментирую со специальным символом $.

    $ ls
    foo bar zoo
    $ echo $*
    #return nothing
    $ echo $@*
    foo bar zoo

Что происходит с @ и $

Дополнительно,

    $ ls $
    ls: $: No such file or directory
    $ ls $*
    foo bar zoo
    $ ls $a  #or any character
    foo bar zoo

Меня смущает изменчивость $.

Как интерпретировать его поведение выше.

Источник

Ответы (1)

avatar
kyodev
8 апреля 2018 в 11:59
1

некоторые примеры:

#!/bin/bash

a_function(){

    echo "positional parameters must be called in a script or a function"
    echo "positional parameters: $@"
    echo "positional parameters: $*"
    echo "directory's content:" *
}

a_function "one" "two" "three" "pan"

вывод:

positional parameters must be called in a script or a function
positional parameters: one two three pan
positional parameters: one two three pan
content of directory: <your current directory>

пс:

  • ls $a переменная ls a (пустая), поэтому просто ls
  • ls $* ls позиционные параметры (пусто), так просто ls
  • echo $@* отображать $@ (пусто) и каталог "
  • ls: $, ошибка $ одна

дополнительная информация: doc bash