~~Zadanie.#~~ echo -e "echo hello world\ndate" > plik sh plik ~~Zadanie.#~~ echo 'readlink /proc/$$/exe' > plik chmod +x plik ./plik csh ./plik ~~Zadanie.#4~~ #!/bin/sh echo hello world ~~Zadanie.#~~ #!/bin/sh echo "Drugi argument: $2" echo "Czwarty argument: $4" ~~Zadanie.#~~ #!/bin/sh echo "\$0: $0" echo "\$\$: $$" echo "\$#: $#" echo "\$@: $@" ~~Zadanie.#8~~ #!/bin/sh SCRIPTDIR="$(readlink -f "$0")" SCRIPTDIR="${SCRIPTDIR%/*}" echo "$SCRIPTDIR" lub #!/bin/sh echo "$(dirname $(readlink -e $0))" ~~Zadanie.#~~ #!/bin/sh if rm plik then echo udało się else echo nie udało się fi ~~Zadanie.#~~ #!/bin/sh if rm "$1" then echo udało się else echo nie udało się fi ~~Zadanie.#~~ #!/bin/sh if [ $# -ne 2 ] then echo skrypt nie ma dwóch argumentów exit fi if [ "$1" -lt "$2" ] then echo argumenty są w porządku else echo pierwszy argument nie jest mniejszy niż drugi exit fi ~~Zadanie.#~~ #!/bin/sh if [ -f "$1" -a -w "$1" ] then date >> "$1" else echo "błąd: $1 nie jest zwykłym plikiem lub nie ma praw do zapisów" exit fi ~~Zadanie.#~~ #!/bin/sh if [ -f "$1" -a -x "$1" ] then FIRSTLINE="$(head -n1 "$1")" if [ "$FIRSTLINE" = "#!/bin/sh" ] then echo "$1 jest wykonywalnym skryptem powłoki" fi fi ~~Zadanie.#~~ #!/bin/sh if [ ! -f "$1" ] then echo "'$1' nie istnieje lub nie jest zwykłym plikiem" exit fi if [ ! -x "$1" ] then chmod +x "$1" fi FIRSTLINE="$(head -n1 "$1")" if [ "$FIRSTLINE" != "#!/bin/sh" ] then TEMPFILE="$(mktemp -p. || mktemp)" echo '#!/bin/sh' > "$TEMPFILE" cat "$1" >> "$TEMPFILE" chmod --reference="$1" "$TEMPFILE" touch --reference="$1" "$TEMPFILE" mv "$TEMPFILE" "$1" fi ~~Zadanie.#~~ #!/bin/sh case "${1##*.}" in pdf) pdftotext "$1" -;; zip) unzip -l "$1";; *) cat "$1";; esac ~~Zadanie.#~~ #!/bin/sh for VAR in "$@" # 'in "$@"' można pominąć, bo "$@" jest domyślną listą argumentów dla for do echo "=== $VAR ===" head -n1 "$VAR" tail -n1 "$VAR" done ~~Zadanie.#~~ #!/bin/sh for POW in $(seq ${1:-20}) do echo "2**$POW=$((2**POW))" done ~~Zadanie.#~~ #!/bin/sh E=1 V=2 while ((V<${1:-10000})) do echo "2**$E=$V" V=$((V*2)) E=$((E+1)) done ~~Zadanie.#~~ #!/bin/sh NUM=0 while [ -e myProg_$NUM.log ] do NUM=$((NUM+1)) done LOG=myProg_$NUM.log date > $LOG ~~Zadanie.#~~ #!/bin/sh read LINE echo "$(date): $LINE" >> log ~~Zadanie.#~~ #!/bin/sh read MIN while read NUM do [ -z "$NUM" ] && break [ "$NUM" -lt "$MIN" ] && MIN="$NUM" done echo $MIN ~~Zadanie.#~~ #!/bin/bash select FILE in /etc/logrotate.d/* do [[ $REPLY = q ]] && break [[ $FILE ]] || continue echo "===$FILE===" cat "$FILE" done ~~META: language = pl ~~