Исправление Zmicier, (текущая версия) :
Замену команд спецсимволами для сокращения кода я удобной не считаю.
???
Если я правильно разобрал «<<<» заменит в стандартном вводе символы "." и «/» пробелами в результате чего получится
read a b c d m << 192 168 0 0 24
Вы неправильно разобрали. И это более чем легко понять, если взять и попробовать выполнить эту вашу read a b c d m << 192 168 0 0 24
и получить ошибку, тогда как IFS='./' read a d c d m <<< 192.168.0.0/24
очевидно работает.
Достаточно точный эквивалент <<< foo
есть конструкция
<<EOF
foo
EOF
А почему не сработает, если заменить это удобочитаемым вариантом:
eval `ipcalc --minaddr "$1"`
echo "${MINADDR//\02E/\020}" | read a b c d
Извините, я навскидку вообще не понимаю, что́ вы хотите написать (то есть, как это должно по-вашему работать). И уж тем более не понимаю, почему вы называете этот набор черточек, кавычек и скобочек «удобочитаемым».
А писать echo foo | ...
ни при каких обстоятельствах не нужно. И вообще создавать подоболочки там, где без них можно обойтись, есть вредная привычка.
Исходная версия Zmicier, :
Замену команд спецсимволами для сокращения кода я удобной не считаю.
???
Если я правильно разобрал «<<<» заменит в стандартном вводе символы "." и «/» пробелами в результате чего получится
read a b c d m << 192 168 0 0 24
Вы неправильно разобрали. И это более чем легко понять, если взять и попробовать выполнить эту вашу read a b c d m << 192 168 0 0 24
и получить ошибку, тогда как IFS='./' read a d c d m <<< 192.168.0.0/24
очевидно работает.
Достаточно точный эквивалент <<< foo
есть конструкция
<<EOF
foo
EOF
А почему не сработает, если заменить это удобочитаемым вариантом:
eval `ipcalc --minaddr "$1"`
echo "${MINADDR//\02E/\020}" | read a b c d
Извините, я навскидку вообще не понимаю, что́ вы хотите написать (то есть, как это должно по-вашему работать). И уж тем более не понимаю, почему вы называете этот набор черточек, кавычек и скобочек «удобочитаемым».
А писать echo foo | ...
ни при каких обстоятельствах не нужно.