Я написал этот сценарий оболочки. Я получил сообщение об ошибке для строк 14 и 18, но я не вижу, что не так. Сценарий должен анализировать каждый файл *.fq
. Если первые три символа данного файла не соответствуют «HWI», тогда скрипт просто ответит «invalide format», но если они совпадут, скрипт даст мне количество строк «HWI» в этом файле.Как проверить формат файла
!/bin/sh
for f in *.fq
do
a="$(head -n1 $f)"
c="$(expr substr $a 2 3)"
echo $c
nr="$(grep -w "HWI" $f | wc -l)
if [ "$c"="HWI" ] ;
then
echo $f | "the number of read of $f is $nr"
else
echo"Invalide Format"
fi
done
Может кто-нибудь объяснить, каковы мои ошибки?
'echo" foo "' является ошибкой, потому что вам нужно пространство между командой и строкой. 'echo $ var | «string» - это ошибка, если «строка» не является командой (и не делает ничего полезного, если только эта команда не считывает данные со стандартного ввода). Добавьте пробел и отпустите '$ f |' из этой другой строки 'echo'. О, также ** сообщите нам ошибки, которые вы получаете **, поэтому нам не нужно гадать. –
Кроме того, исправьте she-bang ('#!/Bin/sh'), и ваш скрипт не имеет 18 строк, поэтому это, вероятно, всего лишь отрывок, но если это так, то цитирование номеров строк бесполезно. .. – twalberg