10

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

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

3 ответа3

19

Предполагается, что $ 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
4

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

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

./myscript.sh hello 123 

затем

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

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

3

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .