Я плохо знаком с миром Linux, и я использовал Windows и писал Visual C++ в течение прошлого года или около этого. Я нахожу, что удар, кажется, самая популярная оболочка в мире Linux. Существует ли оболочка CLI Linux, которая была бы самой близкой для избиения возможностей, но с C/C++ вводит синтаксис?
Существует CSH, который отвечает всем требованиям.
От Википедия
оболочка C (csh или улучшенная версия, tcsh, на большинстве машин) является оболочкой Unix, которая была создана Bill Joy, в то время как он был аспирантом в Калифорнийском университете, Беркли в конце 1970-х. Это было распределено широко, начавшись 2BSD выпуск системы Unix BSD, которую Joy начал распределять в 1978. 2 Другими ранними участниками идей или кода был Michael Ubell, Eric Allman, Mike O'Brien и Jim Kulp.
Или Вы могли попробовать TCSH (Спасибо! @muru)
От Википедия
tcsh (/ЛЊtiЛђЛ€siЛђКѓЙ ›l/"tee-cee-shell",/Л€tiЛђКѓЙ› l/"оболочка мишени", или поскольку акроним "кладет cee название буквы H эс для первого удара"), оболочка Unix на основе и совместимый с оболочкой C (csh). Это - по существу оболочка C с программируемым завершением командной строки, редактированием командной строки и несколькими другими функциями. В отличие от других общих оболочек, функции не могут быть определены в tcsh сценарии, и пользователь должен использовать псевдонимы вместо этого (как в csh).
Примечание, что эти оболочки не используются так широко как удар и следовательно некоторые make-файлы и сценарии оболочки, может вести себя непредсказуемо.
Bash поддерживает некоторый синтаксис C-стиля. Например:
Объявления функции / определения синтаксически подобны объявлениям функции / определения в C, кроме Вас, dont't не определяют никакой параметры (которые выбираются с помощью позиционных параметров $1
, $2
, $3
...), ни типы возврата (Bash не использует типы вообще):
foo() {
# ...
}
Или снова так же к C использование встроенного объявления / определение:
foo() { #...; }
Быть отмеченным, что при использовании встроенного объявления / определение первый и последний оператор должен быть разделен пробелом от {
и }
соответственно и что (снова так же к C) каждый оператор должен быть разделен от точки с запятой от других и что заключительный оператор должен закончиться точкой с запятой:
foo() { command1; command2; command3; }
Для полноты альтернативный способ объявить / определяющий функцию использует ключевое слово function
, которому не нужно ()
после имени функции:
function foo {
#...
}
Можно оценить выражение C-стиля путем включения их в двойную круглую скобку (())
: множество операторов C-стиля поддерживается, (включая присвоение), например: =
, >
, >=
, ==
, !=
, <
, <=
, &&
, ||
, !
, среди других:
$ i=0
$ j=1
$ ((i > j)) && echo True
$ ((i >= j)) && echo True
$ ((i == j)) && echo True
$ ((i != j)) && echo True
True
$ ((i < j)) && echo True
True
$ ((i <= j)) && echo True
True
$ ((i && j)) && echo True
$ ((i || j)) && echo True
True
$ ((\! i)) && echo True
True
$ ((\! j)) && echo True
$ ((i = j))
$ echo $i
1
$ echo $j
1
Этот способ оценить выражения C-стиля может использоваться в сочетании с if
, while
и until
операторы:
if((i == 0)); then
# ...
done
while((i == 0)); do
# ...
done
until((i == 0)); do
# ...
done
Прежде всего, (())
также позволяет писать C-стиль for
условия цикла:
for((i = 0; i < 3; i++)); do
# ...
done
Оценка выражений C-стиля не поддерживает присвоение результата оценки; для этого можно использовать арифметическое расширение ($(())
), который допускает своего рода присвоение выражений C-стиля:
$ i=0
$ j=1
$ k=$((i > j))
$ echo $k
0
$ k=$((i < j))
$ echo $k
1
$ x=$((1 + 2 + 3))
$ echo $x
6
C-стиль, снабженный префиксом / снабженный постфиксом инкремент / операторы понижения, также поддерживается:
++i
i++
--i
i--