Wie kann ich eine Kommandozeile (unix/linux) - Anweisung, die verwendet Variablen zu führen zahlreiche Befehle?
-
09-06-2019 - |
Frage
Ich umstellen müssen einige der Inhalte in verschiedene Verzeichnisse, aber es ist ein bisschen ein Schmerz.Um die Anwendung zu Debuggen, die ich arbeite (eine ruby-app), die ich brauche, um meine Edelsteine in mein Edelstein-Ordner ein zu einer Zeit (lange Geschichte;überblick:eine ist gebrochen und ich kann nicht herausfinden, welche).
Also muss ich etwas tun wie:
sudo mv backup/gem/foo gem/
sudo mv backup/doc/foo doc/
sudo mv backup/specification/foo.gemspec specification/
ersetzen Sie "foo" jedes mal.Wie kann ich Autor, ein einfaches shell-Skript, lassen Sie mich etwas tun wie:gemMove("foo") und füllen Sie die Lücken für mich?
Lösung
legen Sie Folgendes in eine Datei namens gemmove:
#!/bin/bash
foo=$1
if [ x$foo == x ]; then
echo "Must have an arg"
exit 1
fi
for d in gem doc specification ; do
mv backup/$d/$1 $d
done
dann tun
chmod a+x gemmove
und rufen Sie dann "sudo gemmove foo' zu bewegen, die foo Edelstein aus der backup-Verzeichnisse in the real ones
Andere Tipps
Sie könnte verwenden Sie einfach die bash-shell-Argumente wie diese:
#!/bin/bash
# This is move.sh
mv backup/gem/$1 gem/
mv backup/doc/$1 doc/
# ...
und dann führen Sie es aus als:
sudo ./move.sh foo
Werden Sie sicher, dass das Skript ausführbar mit
chmod +x move.sh
in der bash, so etwas wie:
function gemMove()
{
filename=$1
mv backup/gem/$filename gem/$filename
mv backup/doc/$filename doc/$filename
mv backup/specification/$filename.spec specification
}
dann können Sie einfach anrufen gemMove("foo")
an anderer Stelle im Skript.