Що $#означає оболонка?
У мене є такий код, як
if [ $# -eq 0 ]
then
Я хочу зрозуміти, що $#означає, але пошук у Google дуже поганий для пошуку таких речей.
Що $#означає оболонка?
У мене є такий код, як
if [ $# -eq 0 ]
then
Я хочу зрозуміти, що $#означає, але пошук у Google дуже поганий для пошуку таких речей.
Відповіді:
Ви завжди можете перевірити чоловічу сторінку вашої оболонки. man bashкаже:
Special Parameters
# Expands to the number of positional parameters in decimal.
Тому скрипт оболонки може перевірити, скільки параметрів задано з таким кодом:
if [ "$#" -eq 0 ]; then
echo "you did not pass any parameter"
fi
manмайже все, включаючи manсебе. Спробуйте також aproposдеякий час.
infoабо довідкову сторінку, або додаткову інформацію (дуже деталізовану та розділену), якщо в пакетах є кілька
Насправді,
`$` refer to `value of` and
`#` refer to `number of / total number`
Так разом
`$#` refer to `The value of the total number of command line arguments passed.`
Таким чином, ви можете використовувати $#для перевірки кількості переданих аргументів / параметрів, як ви робили, та обробляти будь-які несподівані ситуації.
Так само і у нас
`$1` for `value of 1st argument passed`
`$2` for 'value of 2nd argument passed`
тощо.
Це є
кількість параметрів, з якими викликався скрипт
кількість параметрів, які були встановлені в сценарії set -- foo bar
(при використанні в межах функції) кількість параметрів, за допомогою яких була викликана функція ( setпрацюватиме і там).
Це пояснюється на сторінці bash man у блоці "Спеціальні параметри".