~~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 -le "${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/sh
while read X Y
do
echo $((X*Y))
done
~~Zadanie.#~~
#!/bin/bash
select FILE in /etc/logrotate.d/*
do
[[ $REPLY = q ]] && break
[[ $FILE ]] || continue
echo "===$FILE==="
cat "$FILE"
done
~~META:
language = pl
~~