Portál AbcLinuxu, 13. července 2025 19:01
Zdaravím mám takovýhle kus kodu
...smazáno na žádost tazatele...
A moje otazka zni. Kdyz spustim skript takto ./mujskript.sh -ew. ls tak by se mel vykonat strace ls a z vypisu vysekat radky ktere vyhovuji prepinacum....Ale me se spusti strace -w misto strace ls...jak udelam aby se to chovalo spravne....
strace -f "$@"
, kde v promene $@
budou vsechny parametry, tzn.bude se rovnat -ew. ls
, takze se zavola:strace -f -ew. ls
../mujskript.sh "ls -la" -ew.
...
STRACE_ARGS=$1
shift
while getopts "ew:r:v:" param; do
case $param in
e)
echo "=== RUN PROCESS ==="
strace -f $STRACE_ARGS 2>&1| grep "execve("| grep "= -1 ENOENT" -v| sed 's/"/ /g'| awk '{ print $2 }'| sort| uniq
;;
...
Máš na mysli realizaci "zkrácených voleb" jako to umí např. tar nebo ps?
$ tar zxf archive.tgz $ ps aux
while getopts "ab:" C; do
case $C in
a) echo "A";;
b) echo "B: " $OPTARG;;
esac;
done
S tim ze to pak funguje takhle:
$ for T in "-a" "-a -b" "-a -b xx" "-abyy" "-ba" "-ba -a"; do echo "Calling with: $T"; bash -c 'while getopts "ab:" C; do case $C in a) echo "A";; b) echo "B: " $OPTARG;; esac; done' -- $T; done
Calling with: -a
A
Calling with: -a -b
A
--: option requires an argument -- b
Calling with: -a -b xx
A
B: xx
Calling with: -abyy
A
B: yy
Calling with: -ba
B: a
Calling with: -ba -a
B: a
A
while getopts "f:ho:v" flag; do case "$flag" in f) fps="$OPTARG" ;; h) printusage exit 0 ;; o) output="$OPTARG" ;; v) videoonly=yes ;; *) printusage exit 1 ;; esac done shift "$((OPTIND - 1))"
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.