Weisen Sie einer Variable einen Substr aus einem String zu

805
VamsiKrishna

Ich bin neu im Unix-Skript. Ich werde gebeten, ein ksh-Skript zu ändern.

Ich muss einen Teilstring einer Zeichenfolge einer anderen Variablen zuweisen. Ich habe es unten versucht und es funktioniert nicht

 GET_OLDEST_FILE=`ls -ltr *$FILE_PATTERN* | head -1 | awk ''` echo "Oldest File in Dir " $GET_OLDEST_FILE TIMESTAMP_ON_FILE=substr($,1,17) echo "Timestamp on file is " $TIMESTAMP_ON_FILE 

eine Möglichkeit vorschlagen, die Zuweisung zu erledigen

0
http://www.tldp.org/guides.html - Suchen Sie nach dem Advanced Bash-Skripthandbuch. ksh könnte jedoch etwas anders sein. Hannu vor 9 Jahren 0
Danke @Hannu das funktionierte TIMESTAMP_ON_FILE = `echo $ ` VamsiKrishna vor 9 Jahren 0
Das sollte TIMESTAMP_ON_FILE = $ sein - Ihr Konstrukt ist unnötig komplex. Meine `ksh`-Dokumentation enthält jedoch keine $ {::} -Erweiterung: Sie ist eine Funktion von` bash`. AFH vor 9 Jahren 0
@AFH Danke für den Tipp, es hat geklappt. VamsiKrishna vor 9 Jahren 0
Was ohne `$ {::}` funktioniert, ist `TIMESTAMP_ON_FILE = $ (printf" .5s "" $ GET_OLDEST_FILE ")`. Hier habe ich "$ ()" anstelle von Anführungszeichen verwendet, da letztere beim Kommentieren für Codesegmente verwendet werden. AFH vor 9 Jahren 0

1 Antwort auf die Frage

0
Hannu

http://tldp.org/guides.html - Suchen Sie nach dem Advanced Bash-Skripthandbuch. ksh könnte jedoch etwas anders sein.

In diesem Leitfaden finden Sie einen ganzen Abschnitt zur String-Manipulation.

alphas="abcdefg";echo $wird gedruckt de, dh zwei Zeichen, beginnend mit der vierten (0 ist die erste) von $ alphas.