while [ 1 ]
do
k=" "
n=" "
p=0;
trap 'prer' 2 // обработчик прерываний prer на сигнал SIGINT
prer()
{ //функция обработки прерываний
let p++ // счетчик прерываний
echo "prerivanie"
}
while [ -z $k ] // пока не существует переменной k
do
echo "Key=?"
read k
done
while [ -z $n ] // пока не существует переменной n
do
echo "ima faila?"
read n
done
trap 'prer1' 2 // установка второго обработчика прерываний
prer1()
{
let p++
echo "bolee 2-h prerivaniy"
if [ $p -gt 2 ]; then // если поступило более 2 прерываний
echo "dlina '$n wc-l '"
fi
}
sleep 1
k=$k''$n // конкотинация строк
echo $k | (read fr; ls $fr) // передача через конвейер в саб-shell и выполнение команды ls
done
done
bash
Код:
проблема в том, что когда я задаю имя файла например 111.txt то вылезает ошибка
Цитата:
ls: неверный ключ -- «.»
Попробуйте `ls --help' для получения более подробного описания.
Попробуйте `ls --help' для получения более подробного описания.
если вводить имя файла без точки, то просто выводится список всех файлов
Цитата:
k=$k[COLOR="Blue"]''[/COLOR]$n
Надо вставить тут пробел.
Цитата: Indian
Надо вставить тут пробел.
спасибо, заработало, только появилась другая проблема длина не выводится(
Цитата:
echo "dlina '$n wc-l '"
echo "dlina `wc -l $n`"
Цитата: Indian
echo "dlina `wc -l $n`"
уже пробовал, не помогло..
Код:
while [ 1 ]
do
k=" "
n=" "
p=0
trap 'prer' 2
prer()
{
let p++
echo "prerivanie"
}
while [ -z $k ]
do
echo "Key=?"
read k
done
while [ -z $n ]
do
echo "ima faila?"
read n
done
k=$k' '$n
echo $k | (read fr; ls $fr)
#-------------------Вывели размер файла---------------------
#-----------------Далее: ждем 3 прерывания--------------------
p=0 #считаем по-новой, от 0 до 3
trap 'prer1' 2
prer1()
{
let p++
if [ $p -gt 2 ]; then
echo
echo "bolee 2-h prerivaniy"
echo "dlina `wc -l $n`"
fi
}
read #Ctrl-C отменяет sleep, а read на него не реагирует.
#Вообщем, три раза Ctrl-C и выводится длина.
done
do
k=" "
n=" "
p=0
trap 'prer' 2
prer()
{
let p++
echo "prerivanie"
}
while [ -z $k ]
do
echo "Key=?"
read k
done
while [ -z $n ]
do
echo "ima faila?"
read n
done
k=$k' '$n
echo $k | (read fr; ls $fr)
#-------------------Вывели размер файла---------------------
#-----------------Далее: ждем 3 прерывания--------------------
p=0 #считаем по-новой, от 0 до 3
trap 'prer1' 2
prer1()
{
let p++
if [ $p -gt 2 ]; then
echo
echo "bolee 2-h prerivaniy"
echo "dlina `wc -l $n`"
fi
}
read #Ctrl-C отменяет sleep, а read на него не реагирует.
#Вообщем, три раза Ctrl-C и выводится длина.
done
Теперь надо доделать ввод/вывод на несколько файлов.
заработало, спасибо)