Wenn ich versuche, den folgenden Code auszuführen, ersetzt die Shell $ 4 und $ 2 mit Leerzeichen, weil sie nicht als eine Bash-Variable definiert sind. Meine Frage ist, wie halte ich Bash davon ab, die Positionsparameter für awk als seine Variablen zu bewerten? Ich habe versucht, doppelte und einfache Anführungszeichen um die Positionsparameter zu setzen, die Bash jedoch nicht davon abhalten, sie als lokale Variablen anstelle von Strings zu interpretieren.BASH Shell-Ausführung von String mit Positionsparametern
Dies ist, was wird zurückgegeben, wenn ich echo "$x$i$y"
date -r /root/capture/capture11.mp4 | awk '{print }' | awk -F":" '/1/ {print }'
Code:
#!/bin/sh
i=$(cat /etc/hour.conf)
x="date -r /root/capture/capture"
y=".mp4 | awk '{print $4}' | awk -F\":\" '/1/ {print $2}'"
$x$i$y
Jede Hilfe wäre sehr dankbar!
Erstellen einer Befehlszeile mit einer einfachen Zeichenfolge Verkettung und Anführungszeichen wird mit Feuer gespielt. – anubhava
vielleicht, aber was ist ein besserer Weg, um die Anzahl der Minuten nach einer Stunde für eine vorhandene Datei zu erhalten? – user3308131
Verwenden Sie ein Shell-Array – anubhava