2016-08-18 2 views
1

Mein SkriptWarum wurde das Arbeitsverzeichnis nicht mit meinem Skript geändert?

#!/bin/bash 

for i in *_TEx_*.dat; 
do 
    file1=$i 
done 

for i in *_TEy_*.dat; 
do 
    file2=$i 
done 

echo file1="$file1" 
echo file2="$file2" 

awk '$0+0 == $0 { printf "%.3f\n", $0/.05 }' "$file1" > ex65536.dat 
awk '$0+0 == $0 { printf "%.3f\n", $0/.05 }' "$file2" > ey65536.dat 

mv *.dat /home/milenko/birrp 

mycd() { 
    cd /home/milenko/birrp 
} 

mycd 

Aber

[email protected]:~/procmt$ pwd 
/home/milenko/procmt 

Was meinen Anweisungen falsch ist das Arbeitsverzeichnis zu ändern?

+0

Dies passiert, weil Sie in ein anderes Verzeichnis in der Subshell verschieben, das das Skript ausführt. Sobald es fertig ist, sind Sie zurück in der Haupt-Shell, wo keine 'cd' durchgeführt wurde. – fedorqui

+0

Die wd wird für die Subshell geändert, die das Skript ausführt, nicht Ihre interaktive Shell, die die Subshell hervorgebracht hat –

Antwort

1

versuchen

... 
mycd() { 
    cd /home/milenko/birrp 
    exec /bin/bash 
} 

mycd 

oder Ihr Skript ausführen, wie unten;

. ./yourscript.sh 
Verwandte Themen