我正在尝试读取 .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
将返回行数。