我正在嘗試讀取 .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
得到的最終輸出結合
光碟project/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
將返回行數。