Adicionando entrada do usuário ao caminho de execução para coletar dados

Adicionando entrada do usuário ao caminho de execução para coletar dados

Estou tentando ler o número de linhas em um arquivo .list, mas o arquivo .list está dentro de uma pasta. meus códigos são como acima:

#!/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

meus códigos estão definitivamente errados, mas minha ideia é dizer que um usuário insere a parte frontal e adiciona o $fileaddpathcd à pasta final. por exemplo, o usuário digita project/user123/folder1. Isso é então combinado com filepath=/filebig/filemedium/filesmall/data.listPara obter um resultado final de

cdproject/user123/folder1/filebig/filemedium/filesmall/data.list

Responder1

Você deve mudar a linha:

filefinalpath=$filename + $filepath

ser

filefinalpath="${filename}${filepath}"

Responder2

Vários problemas:

1) cdsignifica "alterar diretório" e só permite mover para um diretório, mas falhará para um arquivo.

OK:

cd /path/to/directory

ERRO:

cd /path/to/directory/file.list

2) Combinando strings

 stringA=foo
 stringB=bar
 newstring="$oldstring""$newstring"

3) Contando linhas

Eu sugiro fortemente usar wcpara isso:

wc -l file

retornará o número de linhas.

informação relacionada