Ich liebe und hasse es, Bash zu schreiben. Ich liebe, dass es so gestrafft für den Betrieb auf Dateien und die Arbeit mit Prozessen (ich stimme mit this popular question, dass es viel besser in dieser Hinsicht als Python, Ruby, etc. ist), aber ich hasse die Syntax, insbesondere um Conditionals, SchleifenGibt es Sprachen, die zu Bash kompilieren?
usw.(Dies ist subjektiv, aber ich finde es sowohl verwirrend und ärgerlich Eg $var
beim Lesen, aber var
beim Schreiben;. schreibt unbemerkt fehlschlagen, wenn es Räume um =
, die doppelten eckigen Klammern in ifs wenn regexp verwendet wird; doppelte Semikolons manchmal und einzelne Semikolons andere; usw.)
Als ein großer Fan von CoffeeScript, die c ompiles zu JS, ich frage mich: Gibt es Sprachen, die die Ästhetik/Syntax von Sprachen wie Python/Ruby/CoffeeScript haben, die aber kompiliert und als Bash statt einer dieser anderen Laufzeiten ausgeführt werden?
z. Ich würde gerne mit nur ein bisschen einfacher Syntax meist-Bash in der Lage sein zu schreiben:
$AGGREGATE_FILENAME = 'allfiles.txt'
if not exists $AGGREGATE_FILENAME
touch $AGGREGATE_FILENAME
for $file in files/*
cat $file >> $AGGREGATE_FILENAME
switch $1
case 'test'
run-tests
echo 'Tests finished!'
case 'deploy'
echo 'Packaging...'
mv foo bar/
deploy-bar
Dies ist ein super konstruiertes Beispiel, und die Syntax ist ein strawman (meist aus Coffee inspiriert, aber den wesentlichen Bash Vorstellungen halten von erstklassigen Befehlen, getrennt von Variablen und losen Typisierung).
Wie auch immer, nur eine Frage und Denkanstoß. Ich würde Liebe in der Lage sein, meine Skripte in etwas schöner als Bash zu schreiben. =) Danke!
Haben Sie darüber nachgedacht, Perl anzusehen? Es hat Datei-Globs, prägnante Existenztests ('' 'print 'existiert' if (-e $ filename);' '') und führt die Ausführung aus. – tjdett
Ich habe Perl noch nie probiert. Es kam mir in den Sinn, als ich diese Frage schrieb, aber ich nahm immer an, dass Perl auch voller unverständlicher Syntax war. = D Ich überprüfe es - danke! –
Es kann sein. Glücklicherweise müssen Sie das meiste nicht wirklich selbst verwenden. –