Если только для bash, то должно работать:
#!/bin/bash
powers_of_two(){
sum=0
for n # for every argument from the command line.
do
[[ $n =~ ^0*([0-9]+)$ ]] || # check that the argument only has base 10 digits.
continue # If not go to next number.
n=${BASH_REMATCH[1]} # Remove all of the leading zeros.
(( n>0 && !(n&(n-1)) )) && # Is n positive and a power of 2.
printf '%d %d\n' "$n" "$((sum+=n))" # print the number
# and the sum as integer
# numbers in base 10.
done
}
powers_of_two -22 0 1 2 3 4 5 7 8 08 00008 9 31 32 33 -2 asd fhgh 2+2 3e3 inf
При выполнении:
$./script
1 1
2 3
4 7
8 15
8 23
8 31
32 63
Вероятно, потому что он скомпилирован по-другому. По крайней мере, пакет Debian Zsh компилирует его с --enable-etcdir=/etc/zsh
, чтобы разделить файлы в один каталог, сохраняя чистоту основного /etc
. Заметьте, что это может касаться выбора конкретного дистрибутива -, а не Linux в целом.
Вы можете легко обойти это, включив в свой репозиторий символические ссылки из файлов в /etc/zsh
на их аналоги в/etc
(или наоборот ), или с помощью символических ссылок всего /etc/zsh
на .
.