Я на самом деле играю с аргументами, и это случилось. Я просто хотел посмотреть, что произойдет, если я наберу $1
, и я сделал это и получил что-то ниже.
raja@raja-BONEFISH:~$ $1
19301: command not found
Что означает это 19301, это что-то говорит?
Итог: что значит для $1
в bash.
$
PID (идентификатор процесса) текущего процесса.
$1
вышеупомянутый PID, сопровождаемый литеральной строкой 1
.
, Таким образом, это говорит Вам, который Ваш bash
процесс с PID 1930.
, Но... свободный прием:
show() { eval echo \$1; }
show PATH
/home/romano/bin:/usr/local/bin:/bin:/usr/bin
(довольно замысловатый, не так ли?)
[еще 1111] информация в TLDP.
$
- изодромный с предварением из текущей оболочки (не подокружают) - видят , Каковы специальные переменные оболочки знака доллара?
$1
- изодромный с предварением из текущей оболочки (не подокружают), сопровождаемый 1
.
$2
- изодромный с предварением из текущей оболочки (не подокружают), сопровождаемый 2
.
$a
- изодромный с предварением из текущей оболочки (не подокружают), сопровождаемый a
символ.
И так далее...
Посмотрите вывод echo $1
.
И Вы получаете ошибку command not found
, потому что Вы пытаетесь выполнить строку, состоявшую из цифр, который, очевидно, не является командой.
Вы конкатенировали $
и 1
вместе для получения PID текущей оболочки и 1
, т.е. $
обозначает PID в настоящее время рабочей оболочки, и 1
просто символ, Вы могли сделать $a
, $@
для получения PID со следующим символом.
$$, который это укажет 1930
, который является изодромен с предварением из текущей оболочки.
, Когда Вы тип $1
, который означает изодромный с предварением сопровождаемый одним так Вы вывод, были бы 19301
.
Попытка $2
вывод будет 19302