データ収集のための実行パスにユーザー入力を追加する

データ収集のための実行パスにユーザー入力を追加する

.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

行数を返します。

関連情報