Я пытаюсь прочитать количество строк в файле .list, но файл .list находится глубоко внутри папки. Мои коды такие, как указано выше:
#!/bin/sh
echo -e "Enter file location: \c"
read filename
filepath=/filebig/filemedium/filesmall/data.list
filefinalpath=$filename + $filepath
cd $filefinalpath
if [ -e "$filefinalpath" ]
then
total=$(grep -c "#" -c -v $filefinalpath)
echo -e "There are $total lines"
else
echo $filefinalpath not found
fi
мои коды определенно неверны, но моя идея в том, что, скажем, пользователь вводит переднюю часть, она добавляется к $fileaddpath
cd в конечную папку. например, пользователь вводит project/user123/folder1
. Затем это объединяется с filepath=/filebig/filemedium/filesmall/data.list
Чтобы получить конечный вывод
CDproject/user123/folder1/filebig/filemedium/filesmall/data.list
решение1
Вам следует изменить строку:
filefinalpath=$filename + $filepath
быть
filefinalpath="${filename}${filepath}"
решение2
Несколько вопросов:
1) cd
означает «изменить каталог» и позволяет перемещаться только в каталог, но не в случае с файлом.
ХОРОШО:
cd /path/to/directory
ОШИБКА:
cd /path/to/directory/file.list
2) Объединение строк
stringA=foo
stringB=bar
newstring="$oldstring""$newstring"
3) Подсчет строк
Я настоятельно рекомендую использовать wc
для этого:
wc -l file
вернет количество строк.