Что ж, я думаю, что нашел ответ на свой первый вопрос в предложениях, которые у меня были при написании заголовка для моего вопроса в Stack Exchange. Я думаю, что это работает. Знайте, просто изменив:
chck_rgx () { # Checks that the given name for a user/group fulfills the regex. The function's parameters are
# * $1: kind of name to check: username, hostname, etc.
# * $2: variable whose value to check if meets the requirements.
local rgx_hostname='^[a-z][a-zA-Z0-9_-]+$' ;
local rgx_inputbox_hostname="The hostname you just submitted isn't a valid name. Try with another name."
local rgx_username='^[a-z][a-z0-9_-]+$' ;
local rgx_inputbox_username="The username you just submitted isn't a valid name. Try with another name." ;
eval rgx_name="\$rgx_$1" ;
eval rgx_inputbox="\$rgx_inputbox_$1" ;
eval name_ch="\$$2" ;
while [[ ! $name_ch =~ $rgx_name ]] ; do
dialog --backtitle "$backtitle_var" \
--title "Wrong $1 submitted" --clear \
--inputbox "$rgx_inputbox" 0 0 2> name-ch ;
name_ch=$(cat name-ch) ;
rm name-ch ;
done
declare -g -- "$2=$name_ch" ;
}
Изменение есть в
declare -g -- "$2=$name_ch"
В любом случае, я все еще хочу знать, есть ли способ получить вывод диалогового окна ввода непосредственно в переменной; нет в файле.
Спасибо.
Вы можете узнать марку и модель каждого физического блочного устройства с помощьюlsblk
:
$ lsblk -do +VENDOR,MODEL,SERIAL
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT VENDOR MODEL SERIAL
sda 8:0 0 1.8T 0 disk ATA WDC WD20EARS-00M WD-WCAZA571XXXX
sdf 8:80 0 465.1G 0 disk WD My Passport 070A WD-WXF1A30YXXXX
sr0 11:0 1 1024M 0 rom HL-DT-ST DVDRAM GH22LS40 6FA3D3AFXXXX
sr1 11:1 1 668M 0 rom WD Virtual CD 070A 57584631413330593830XXXX