@by_EL

Что означает на Linux скрипте перед командой символ $?

Пожалуйста объясните точно не понимаю, что означает символ $ перед Linux командой, для чего используется? PS (пожалуйста только не пишите что # это под рутом а $ не привилегированый режим это я тоже знаю я не об этом) заранее спасибо
  • Вопрос задан
  • 430 просмотров
Пригласить эксперта
Ответы на вопрос 5
saboteur_kiev
@saboteur_kiev Куратор тега Linux
software engineer
Это просто строка приглашения.
Он и означает что вы работаете под обычным пользователем, а # - под рутом. Это и есть его основное назначение, никаких дополнительных функций в этом символе нет.

Переменная PS1 собственно и содержит строку приглашения, которая содержит обычно имя юзера, имя хоста, текущая директория и этот символ.
Ответ написан
@FanatPHP
Чебуратор тега PHP
В общем я добился от автора объяснения, что ему нужно

например при использовании значении переменной например good=bad далее выполнив команду echo $good


То о чем ты говоришь, называется не команда, а переменная. Это и сбило всех с толку.

Объяснение очень простое.
Поскольку в баше ОЧЕНЬ нестрогий синтаксис, и любой текст воспринимается как строка без всяких кавычек, то нужен способ отличить переменную от просто строки. Если ты напишешь
good=bad
echo good

то как система поймет, ЧТО ты хочешь вывести - строку good или переменную good?
поэтому тут без вариантов - переменную надо как-то отличать от остального текста. Это и делает знак доллара

При этом для присвоения значения переменной знак доллара не нужен, поскольку система видит по знаку =, что речь идет о присвоении (и видимо поэтому нельзя ставить проблелы вокруг знака =).
Да, нелогично. Но не все в нашей жизни поддается логике

5fb765391d91b496225527.jpeg
Ответ написан
@mayton2019
Ent. Software engineer. Oracle. SQL. BigData.
Это переменная которая хранит код ошибки предшествующей команды. Обычно 0 - это ок. А другое число говорит о неудаче.
Ответ написан
CityCat4
@CityCat4
Если я чешу в затылке - не беда!
Хм. наверное можно было еще безграмотнее задать вопрос, если постараться. Рюсски нэ радной, даа?

- перед командой в терминале - просто симвод приглашения, означает что терминал готов принять команду. Задается переменной окружения PS1, в которую можно загнать довольно развесистую конструкцию - вот например:
mch=`hostname -s`
PS1='\[\033[01;32m\]${mch:q}:\[\033[01;34m\][$USER]\[\033[01;36m\] \!>\[\033[00;38m\] '

- в скрипте - $$ - содержит PID скрипта, а сам $ - просто символ, с которого начинается переменная в случае, если нужно взять ее занчение

man bash
info bash
Ответ написан
alpik
@alpik
no I, no mine
$#
Number of arguments to script
$*
Arguments to script
$@
Original arguments to script
$-
Flags passed to shell
$?
Status of previous command
$$
Process identification number
$!
PID of last background job
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы