2016-04-27 8 views
0

Sorry, wenn dies schlecht formuliert ist, wie ich neu in Shell-Skript bin.Übergabe von Argumenten in der Bash wie der Unix-Date-Befehl

Ich versuche, ein Skript zu schreiben, und ich möchte Args wie den Unix-Date-Befehl übernehmen.

Beispiel:

$ date '+%I:%M %p' 
08:45 PM 

So wie würde ich so etwas tun in meinem Skript?


EDIT: Was ich in meinem Skript zu tun versuche, übergeben Argumente auf die gleiche Weise wie der Befehl date.

Also, wenn mein Skript waren alle% ein Argumente foo zu ändern, es folgendes tun würde:

$ ./myscript '%a bar' 
foo bar 
+1

Das ist nichts, was Sie in bash machen wollen. –

+1

Ist es die Funktion des Datums, das Sie emulieren möchten oder nur grundlegende Befehlszeilenparameter übergeben? Sehen Sie sich das [GNU Bash Reference Manual] (https://www.gnu.org/software/bash/manual/) an und überprüfen Sie '$ *', '$ @' usw. auf Informationen zu letzterem. –

+0

Das ist eigentlich ziemlich kompliziert, sie analysieren das eigentliche Argument, das viel schwieriger ist, als Argumente in das Skript selbst zu übergeben. Wollen Sie Strings wie folgt analysieren ... '+% I:% M% p'? – Harry

Antwort

1

Dank @tripleee konnte ich mit einer Lösung kommen, die Sie mehrere Suchbegriffe ersetzen erlaubt in einer Zeichenfolge arg.

Hier ist der Code:

res="${1}" 
res="${res//"%a"/water}" 
res="${res//"%b"/chocolate}" 
echo "$res" 

Eingang:

./myscript "like %a for %b" 

Ausgang:

like water for chocolate 

Diese Methode jedes Keyword geht durch dich selbst in die ARG ersetzen möchten, wenn es isn Es ist nicht sehr effizient, aber es macht die Arbeit erledigt.

+0

Sie möchten den ersten Schrägstrich für die globale Ersetzung verdoppeln. Mit einem Schrägstrich wird nur das erste Vorkommen ersetzt. – tripleee

+0

Ich würde erwarten, dass dies schneller ist als ein externer Befehl, sogar für Dutzende von Substitutionen. – tripleee

Verwandte Themen