Доброго времени!
Вот, не могу разобраться, как сделать, чтобы при выводе переменной через echo $variable bash не пытался выполнить команду. Если, к примеру, я скажу
text
echo -E "mount"
в командной строке, то просто выведется слово. А в скрипте echo что с параметрами, что без, приводит к попытке выполнить команду. Как это отключить? Ну, info bash, Bash Scripting... читаю, но не могу понять.
while read "i"; do
length=$(expr length "$i")
word1=$($i:1:$( expr index "$i" " " ) )
echo -E "$word1";
echo "length: $length"
done < "$1"
Я ему скормил файл /mnt/README:
text
cat /mnt/README
The purpose of the /mnt directory is to provide a place for the admin to
mount block device temporarily. Any of the subdirectories of /mnt may be
used, or volumes may even be mounted directly on /mnt (which is the
traditional way of doing things, though /mnt/tmp is also provided for
the purpose of mounting any kind of volume temporarily).
Но как подставить число последним параметром?
Привел этот код к виду
text
while read "i"; do
length=$(expr length "$i")
SpcNumb=`expr index "$i" " "`
word1=$i:0:$SpcNumb
echo "$word1";
echo "length: $length"
done < "$1"
Выводит
text
:0:0
length: 0
The purpose of the /mnt directory is to provide a place for the admin to:0:4
length: 72
mount block device temporarily. Any of the subdirectories of /mnt may be:0:6
length: 73
used, or volumes may even be mounted directly on /mnt (which is the:0:6
length: 67
traditional way of doing things, though /mnt/tmp is also provided for:0:12
length: 69
the purpose of mounting any kind of volume temporarily).:0:4
length: 56
:0:0
length: 0
See the /media directory also.:0:4
length: 30
:0:0
length: 0
var=$foo - присваивает значение переменной foo в данном случае это один, далее при выводе, $var, знак долара, воспринимает переменную var как переменную первого поля $1 с нею работает команда awk print.
Другими словами $ в awk работает только с числовыми значениями.
Так уж awk воспринимает.
Т.е. делает то же самое что и команда: