Я делаю echo $1
, он выводит, какая оболочка входа по умолчанию используется.
Но за echo $2
далее я получаю только новую строку. Это почему?
Предполагается, что $ 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 - аргумент, переданный для сценария оболочки.
Предположим, вы бежите
./myscript.sh hello 123
затем
$ 1 будет привет
2 доллара будет 123
В вашем случае $ 1 печатает используемую по умолчанию оболочку входа в систему, потому что этот аргумент был передан скрипту, который запускает вашу оболочку входа. Но если вы напишите и запустите свой собственный скрипт в текущем сеансе, $ 1, $ 2, ... будут параметрами, которые вы отправите в свой скрипт.