Ktoś wyżej pisał:
#!/bin/bash
#function to display commands
exe() { echo "\$ [email protected]" ; "[email protected]" ; }
i tym ooki obiecujące, ale nie mogę dla mojego życia dowiedzieć się, co robi. Mam wpisane przeze mnie hasło i szukam na stronie man bash dla "\ $" i "$ @", i znajduję absolutnie nic nie jest.
Rozumiem, że tworzona jest funkcja o nazwie "exec()". Rozumiem, że nawiasy klamrowe oznaczają początek i koniec funkcji.Myślę, że rozumiem, że średnik oznacza "twardy powrót" między poleceniem wieloliniowym, więc "{echo" \ $ $ @ "; "$ @"; }”Staje się w istocie:
{
echo "\$ [email protected]"
"[email protected]"
}
Może ktoś mi dać krótkie wyjaśnienie, lub gdzie znaleźć te informacje, ponieważ oczywiście moje google-fu zawodzi mnie?
(Bez znaczenia, aby rozpocząć nowe pytanie w starym wątku, moim celem jest przekierowanie danych wyjściowych do pliku. "Metoda set -x; [commands]; set + x" działałaby dobrze dla mnie, ale nie mogę dowiedzieć się, jak echo wyników do pliku zamiast ekranu, więc starałem się zrozumieć tę inną metodę w nadziei, że mogę użyć mnie bardzo słabe zrozumienie przekierowania/pipes/tee/etc, aby zrobić to samo rzecz.)
Dzięki!
PÓŹNIEJ EDIT:
Z pewnym majsterkowania, wierzę zdobione. Oto mój odpowiednik kod co mam potrzeby:
SCRIPT_LOG="\home\buddy\logfile.txt"
exe() {
params="[email protected]" # Put all of the command-line into "params"
printf "%s\t$params" "$(date)" >> "$SCRIPT_LOG" # Print the command to the log file
$params # Execute the command
}
exe rm -rf /Library/LaunchAgents/offendingfile
exe rm -rf /Library/LaunchAgents/secondoffendingfile
Wyniki w wyglądać logfile.txt jak:
Tue Jun 7 16:59:57 CDT 2016 rm -rf /Library/LaunchAgents/offendingfile
Tue Jun 7 16:59:57 CDT 2016 rm -rf /Library/LaunchAgents/secondoffendingfile
Tylko to, co potrzebne. Dzięki!
Używając słowa "gadatliwy" w ten sposób niczego nie osiągnąć. Możesz zrobić "set -o verbose" lub "set -v" (tylko "verbose") lub 'set -o xtrace' lub' set -x' (tylko "xtrace") lub 'set -xv' (both) lub 'set -o xtrace -o verbose' (oba). –
działa to dobrze, ale należy pamiętać, że "verbose" powoduje nadpisanie $ 1 – JasonS
@ jasonS *. Ale tak, nie pomyślałem o tym, dobry – Wyatt8740