2017-02-26 3 views
0

Ich versuche, aus einer Datei zu kopieren: ~/.ssh/ aber jedes Mal laufe ich das Skript esBash-Skript - Keine Datei existiert in ~/.ssh/

[email protected]:/etc/greenwich $ ./copybash.sh 
cat: ~/.ssh/testfilegen2.log: No such file or directory 

copybash.sh sagen hält

!/bin/bash 
sourceFile="~/.ssh/testfilegen2.log" 
targetFile="/etc/network/interfaces2" 
sudo cat "$sourceFile" > "$targetFile" 
sudo service networking restart 

Irgendwelche Vorschläge?

Danke

+2

Sie müssen wirklich mehr Informationen zur Verfügung stellen, insbesondere den Code in diesem 'copybash.sh' Skript. – Fred

+0

@Fred included copybash.sh code – spbr

+1

Bitte werfen Sie einen Blick auf: [Was soll ich tun, wenn jemand meine Frage beantwortet?] (Http://Stackoverflow.com/help/someone-answers) – Cyrus

Antwort

5

Unquote die Tilde in der Zuordnung zu sourceFile so dass es richtig erweitert. Bei der Parametererweiterung tritt keine Tilde-Erweiterung auf.

sourceFile=~/".ssh/testfilegen2.log" 

(In diesem Fall würden keine Zitate überhaupt notwendig sein, aber nur um zu zeigen, dass die ~ und die folgenden / die einzigen Dinge, die nicht notiert für Tilde-Erweiterung bleiben müssen auftreten.)

+0

Danke, funktioniert gut – spbr

1

Werfen Sie einen Blick auf diesen Schnipsel Code:

#!/bin/bash 
v1=~/'file1.txt' 
v2=~/'file2.txt' 
echo 'Hi!' > $v1 
cat $v1 > $v2 
cat $v2 

$ script.sh 
Hi! 

die Dokumentation im Abschnitt "Tilde Expansion" ist der "General Commands Manual BASH".

Verwandte Themen