В оболочке Linux, что должен делать echo $ 1?

11

Я делаю echo $1, он выводит, какая оболочка входа по умолчанию используется.

Но echo $2вперед я получаю только новую строку. Это почему?

Lazer
источник

Ответы:

21

Предполагается, что $ 1 (или $ 2, $ 3 ...) - это аргументы, заданные некоторому сценарию.

Вот пример сценария:

#!/bin/bash

echo "\$1 is now $1"
echo "\$2 is now $2"
echo "\$3 is now $3"

И пример вывода

jaba@lappy:/tmp$ ./example.sh 
$1 is now 
$2 is now 
$3 is now 
jaba@lappy:/tmp$ ./example.sh 1 2 3
$1 is now 1
$2 is now 2
$3 is now 3
Янне Пиккарайнен
источник
1
И $ 0 - это имя исполняемого скрипта, аналогичное argv.
Бенджамин Баннье
4

$ 1 - аргумент, переданный для сценария оболочки.

Предположим, вы бежите

./myscript.sh hello 123 

затем

$ 1 будет привет

2 доллара будет 123

Мукеш Чапагейн
источник
3

В вашем случае $ 1 печатает используемую по умолчанию оболочку входа в систему, потому что этот аргумент был передан в скрипт, который запускает вашу оболочку входа в систему. Но если вы напишите и запустите свой собственный скрипт в текущем сеансе, $ 1, $ 2, ... будут параметрами, которые вы отправите в свой скрипт.

Михаил Черных
источник