.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
行数を返します。