% cat >test
echo "$0"
echo "$1"
echo "$2"
echo "$3"
% dash
$ D="one two three"
$ sh test $D
test
one
two
three
$ exit
% bash
minoru@hearth ~ $ D="one two three"
minoru@hearth ~ $ sh test $D
test
one
two
three
minoru@hearth ~ $ exit
exit
% zsh
% D="one two three"
% sh test $D
test
one two three
%
WAT
Пролистал zhsoptions
, но ничего релевантного не нашёл. Не понимаю, как это гуглить. Что это за фигня? (/bin/sh -> bash
, если что, но это не должно быть релевантно)
Задача: узнать имя текущего скрипта, если скрипт не исполняется, а сорсится:
$ cat call.sh
#!/bin/sh
. /tmp/tmp/script.sh
$ cat script.sh
#!/bin/sh
echo $0
echo $BASH_SOURCE
$ bash call.sh
call.sh
/tmp/tmp/script.sh
$ zsh call.sh
/tmp/tmp/script.sh
$ /bin/busybox sh call.sh
call.sh
В общем, хуй поймёт как это кросс-интерпертаторно сделать
Cumshot:
lid)
if [ $(echo "ibase=16;echo $value | tr '[:lower:]' '[:upper:]'
% 2" | bc) == 0 ]; then
sleep 1
umask 0022
avconv -f video4linux2 -i /dev/video0 -f image2 -frames:v 1 /var/tmp/faces/face-date +%s
.jpeg
else
DISPLAY=":0.0" xautolock -locknow
fi
Допустим, есть у меня вызов команды с кучей параметров, и я хочу каждый из этих параметров прокомментировать. Вместо того, чтобы писать одну большую портянку и потом один длинный вызов команды, я делаю так:
grep \
--max-count 1 \
--after-context 1 \
"$file" "$db" | \
tail -1
И получаю ошибки:
./test.sh: 20: ./test.sh: --max-count: not found
./test.sh: 22: ./test.sh: --after-context: not found
./test.sh: 24: ./test.sh: /tmp/test_input: Permission denied
./test.sh: 25: ./test.sh: #: not found
Понятное дело, что комментарии всё портят. Но как быть? Я не могу поставить бекслэши перед комментариями, потому что после бэкслеша должен идти перевод строки. Я не могу поставить бэкслеш в конце комментария, потому что тогда он будет частью комментария и не сработает так, как задумано. Что делать?