$ 1 означает …? без ввода?

У меня есть одна программа, которая начинается с этой строки. Что это значит? Из-за знака доллара у меня проблемы с поиском.

Как получилось $ 1 без каких-либо параметров? И что это значит -d здесь?

if [ -d $1 ]; then 

И получается ли полуколока, даже если if-условие даже не начинается? Я думал, что двоеточие приходит только в конце заявления или в конце состояния, как

  if () { }; 

  • Почему бы не использовать бесступенчатые shebangs?
  • sh -c: Неудачная строка с котировкой строки
  • Shell, bash, linux: после объявления переменной, почему используется точка с запятой и что она делает?
  • Почему возврат игнорируется во время вывода в bash?
  • Сделать stdout и stderr буферизироваться одним и тем же буфером
  • Каковы основные отличия между основными ракетами NIX?
  • Удаление файлов с пробелами в именах
  • Что может быть причиной «git pull» resultin »/ bin / sh: 0: Illegal option -r»?
  • One Solution collect form web for “$ 1 означает …? без ввода?”

    Точка с запятой требуется, потому что без указания того, где заканчивается этот контекст (через точку с запятой, новую строку и т. Д.), if не может знать, где заканчивается условие, и начинается условный блок. Для сравнения:

     $ if echo then foo then; then :; fi then foo then $ if echo then; then :; fi then 

    -d – это тест, проверяющий, является ли следующий аргумент каталогом. Из help test (потому что test эквивалентен [ ):

     -d FILE True if file is a directory. 

    Например:

     $ mkdir foo $ if [ -d foo ]; then > echo foo is a dir > fi foo is a dir 

    $1 – первый аргумент, переданный вашей программе. Например:

     $ cat > script << 'EOF' > #!/bin/sh > echo "$1" > EOF $ chmod +x script $ ./script foo foo 

    В стороне, вы должны процитировать здесь $1 , потому что иначе он может расширяться на несколько аргументов, что приводит к синтаксической ошибке из [ :

     $ dir="foo bar" $ [ -d $dir ] sh: 2: [: foo: unexpected operator $ [ -d "$dir" ] $ 
    Linux и Unix - лучшая ОС в мире.