Решено: Bash Function
Модераторы: /dev/random, Модераторы разделов
Решено: Bash Function
Как создать функцию в bash?
Как переменой дать вывод (fdisk -l)? пробовал t1=(fdisk -l) #не катит
Как создать переменую массив?
Спасибо за внимание
Как переменой дать вывод (fdisk -l)? пробовал t1=(fdisk -l) #не катит
Как создать переменую массив?
Спасибо за внимание
Re: Решено: Bash Function
Код: Выделить всё
value=`fdisk -l`
Re: Решено: Bash Function
Не получается
Код: Выделить всё
jj='sudo fdisk -l'
echo $jj
а на экране
sudo fdisk -l
а мне нужно вывод этой командной строки типа
Диск /dev/sda: 160.0 ГБ, 160041885696 байт
255 головок, 63 секторов/дорожку, 19457 цилиндров
Единицы = цилиндры по 16065 * 512 = 8225280 байт
Устр-во Загр Начало Конец Блоки Id Система
/dev/sda1 1 1020 8193118+ 83 Linux
/dev/sda2 * 1021 2040 8193150 83 Linux
/dev/sda3 2041 3570 12289725 83 Linux
/dev/sda4 3571 19457 127612327+ f W95 расшир. (LBA)
/dev/sda5 3571 3832 2104483+ 82 Linux своп / Solaris
/dev/sda6 3833 5872 16386268+ b W95 FAT32
/dev/sda7 5873 8932 24579418+ 7 HPFS/NTFS
/dev/sda8 8933 18366 75778573+ 7 HPFS/NTFS
/dev/sda9 18367 19457 8763426 83 Linux
- Uncle_Theodore
- Сообщения: 3339
- ОС: Slackware 12.2, ArchLinux 64
Re: Решено: Bash Function
http://www.gnu.org/software/bash/manual/bashref.html#SEC22
Код: Выделить всё
teddy@laptop~$ f() { a=3; echo $((a+1)); };
teddy@laptop~$ f
4
Как создать переменую массив?
http://www.gnu.org/software/bash/manual/bashref.html#SEC80
Код: Выделить всё
teddy@laptop~$ a[0]=1;a[1]=2;a[2]=3;
teddy@laptop~$ for ((i=0;$i<3;i++)); do echo ${a[$i]}; done
1
2
3
AMD писал(а): ↑07.08.2007 23:00
Не получается
Код: Выделить всё
jj='sudo fdisk -l' echo $jj
а на экране
sudo fdisk -l
В примере Liksys'а это не кавычки ', которые под ", где русское э, а обратные кавычки `, которые обычно там, где русское ё
Re: Решено: Bash Function
вместо обратных кавычек в "новых" версиях bash'а лучше использовать скобки, удобней и читабельней получается:
ff=$(fdisk -l)
ff=$(fdisk -l)
Re: Решено: Bash Function
Дествитейльно работает и так и с кавычками
Код: Выделить всё
#!/bin/bash
#/sbin/blkid /dev/sda*
clear
Super=""
#Super=$(sudo fdisk -l)
Super=`sudo fdisk -l`
echo $Super
Диск /dev/sda: 160.0 ГБ, 160041885696 байт 255 головок, 63 секторов/дорожку, 19457 цилиндров Единицы = цилиндры по 16065 a b miniprogram miniprogram1 miniprogram3 scriptul scriptul2 scriptul3 text 512 = 8225280 байт Устр-во Загр Начало Конец Блоки Id Система /dev/sda1 1 1020 8193118+ 83 Linux /dev/sda2 a b miniprogram miniprogram1 miniprogram3 scriptul scriptul2 scriptul3 text 1021 2040 8193150 83 Linux /dev/sda3 2041 3570 12289725 83 Linux /dev/sda4 3571 19457 127612327+ f W95 расшир. (LBA) /dev/sda5 3571 3832 2104483+ 82 Linux своп / Solaris /dev/sda6 3833 5872 16386268+ b W95 FAT32 /dev/sda7 5873 8932 24579418+ 7 HPFS/NTFS /dev/sda8 8933 18366 75778573+ 7 HPFS/NTFS /dev/sda9 18367 19457 8763426 83 Linux
в этом тексте почемуто лишние слова появляются а точнее названия файлов в одной папке с запускаемым скриптом
a b miniprogram miniprogram1 miniprogram3 scriptul scriptul2 scriptul3 text 512
Вопрос почему это происходит?
Re: Решено: Bash Function
Происходит это потому, что в выводе команды fdisk -l присутствуют символы звездочки "*", которые bash распознает как подстановочные и выдает вместо них список файлов в текущем каталоге:
Чтобы избавиться от этого эффекта, заключите имя переменной Super в двойные кавычки:
Код: Выделить всё
# fdisk -l
Disk /dev/sda: 36.9 GB, 36951490560 bytes
255 heads, 63 sectors/track, 4492 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sda1 1 33 265041 82 Linux swap / Solaris
/dev/sda2 * 34 4492 35816917+ 83 Linux
Чтобы избавиться от этого эффекта, заключите имя переменной Super в двойные кавычки:
Код: Выделить всё
echo "$Super"
- minoru-kun
- Сообщения: 620
- ОС: Debian GNU/Linux
Re: Решено: Bash Function
Код: Выделить всё
minoru@melancholic:~$ value=`sudo fdisk -l`
minoru@melancholic:~$ echo "$value"
Disk /dev/hda: 80.0 GB, 80026361856 bytes
255 heads, 63 sectors/track, 9729 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/hda1 1 765 6144831 83 Linux
/dev/hda2 * 766 1466 5630782+ 7 HPFS/NTFS
/dev/hda3 1467 9729 66372547+ f W95 Ext'd (LBA)
/dev/hda5 1467 9541 64862374+ 83 Linux
/dev/hda6 9542 9729 1510078+ 82 Linux swap / Solaris
Disk /dev/hdc: 160.0 GB, 160041885696 bytes
255 heads, 63 sectors/track, 19457 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/hdc1 1 19457 156288321 83 Linux