Хотите сделать посильный вклад в развитие Ubuntu и русскоязычного сообщества? Помогите нам с документацией!
0 Пользователей и 1 Гость просматривают эту тему.
Первый вариант бессмысленен чуть менее, чем полностью.
В третьем варианте намёк на выполнение арифметической операции над несовместимыми типами данных.
Битовые операторы<< сдвигает на 1 бит влево (умножение на 2)<<= сдвиг-влево-равно>> сдвиг вправо на 1 бит (деление на 2)>>= сдвиг-вправо-равно (имеет смысл обратный <<=)& по-битовое И (AND)&= по-битовое И-равно| по-битовое ИЛИ (OR)|= по-битовое ИЛИ-равно~ по-битовая инверсия! по-битовое отрицание^ по-битовое ИСКЛЮЧАЮЩЕЕ ИЛИ (XOR)^= по-битовое ИСКЛЮЧАЮЩЕЕ-ИЛИ-равно
Код: (bash) [Выделить]#!/bin/bash#fixed:# first and last strings.echo $1 #это, кстати, зачем?exec 3<"$1" #Открываем файл с дескриптором 3 на чтение IFS="" # Отключаем интерпритацию \t, \n and spaceLANG=C # Разрешаем символы > 0x7Fbytes=0printf "%0.7x: " $byteswhile read -u 3 -d '' -r -n 1 char # -d '' разрешает новые строки, # -r разрешает \ #-u 3 читает из файла с дескриптором 3do ((bytes++)) printf -v value "%02x" "'$char" # ' позволяет взять код символа echo -n "$value" echo -n "" if [[ "$value" < 20 || "$value" > 7e ]] then string+="." # показываем непечатные символы как . else string+=$char fi if (( bytes % 2 == 0 )) # пишем пробелы через каждый 2 байта then echo -n " " fi if (( bytes % 16 == 0 )) # 16 байт в строке then echo " $string" string='' printf "%07x: " $bytes fidone if [[ "$string" != "" ]] # если последняя строка пустая, пропускаемthen (( control=41-(${#string}*2 + ${#string}/3 + (${#string} % 2) * (-1) +1) )) #новая формула while [[ $control > 0 ]] # потому что принтф не работает. или я не умею им пользоваться. ровно $control раз добавляем пробельчик do ((control--)) echo -n " " done echo $stringfi
#!/bin/bash#fixed:# first and last strings.echo $1 #это, кстати, зачем?exec 3<"$1" #Открываем файл с дескриптором 3 на чтение IFS="" # Отключаем интерпритацию \t, \n and spaceLANG=C # Разрешаем символы > 0x7Fbytes=0printf "%0.7x: " $byteswhile read -u 3 -d '' -r -n 1 char # -d '' разрешает новые строки, # -r разрешает \ #-u 3 читает из файла с дескриптором 3do ((bytes++)) printf -v value "%02x" "'$char" # ' позволяет взять код символа echo -n "$value" echo -n "" if [[ "$value" < 20 || "$value" > 7e ]] then string+="." # показываем непечатные символы как . else string+=$char fi if (( bytes % 2 == 0 )) # пишем пробелы через каждый 2 байта then echo -n " " fi if (( bytes % 16 == 0 )) # 16 байт в строке then echo " $string" string='' printf "%07x: " $bytes fidone if [[ "$string" != "" ]] # если последняя строка пустая, пропускаемthen (( control=41-(${#string}*2 + ${#string}/3 + (${#string} % 2) * (-1) +1) )) #новая формула while [[ $control > 0 ]] # потому что принтф не работает. или я не умею им пользоваться. ровно $control раз добавляем пробельчик do ((control--)) echo -n " " done echo $stringfi
а воспринята как строка очевидно, но как с этим бороться?
a=$'\x7f'a=$(printf "%q" "$a")a=${a/\\}a=${a/\'\'}if [ ${#a} -le 1 ] ; then a=$(printf "%03o" "'$a") ; fia=${a//[[:punct:]]}a=${a//0/000}a=${a//1/001}a=${a//2/010}a=${a//3/011}a=${a//4/100}a=${a//5/101}a=${a//6/110}a=${a//7/111}if [[ $a =~ 0..1..... ]] ; then echo OK ; fi
Цитата: ShadowUser15 от 18 Октября 2014, 23:43:05а воспринята как строка заключите выражение в $(()) или $[].
а воспринята как строка
function tb {#USAGE: tb output_base numberprintf "%s\n%d\n" "obase=$1" "$2" | bc}
a=${a//[$\\\']}
a=${a//[[:punct:]]}
bash сам по себе "вспомогательная утилита"…
Страница сгенерирована за 0.052 секунд. Запросов: 25.