在shell中运行for循环时遇到了一个问题。
for i in `cat $file`
do
`cut -d ',' -f 2- $i`
done
我试图从第二列中剪切行并输出它们,但它给了我一个错误:(文件的内容(没有这样的文件或目录
首先,尝试执行cut
命令的输出。
考虑:
$ echo hello >file
$ cat file
hello
$ a=`cat file`
$ echo "$a"
hello
$ `echo "$a"`
-bash: hello: not found
$
也许您只是想显示cut
:的输出
for i in `cat "$file"`
do
cut -d , -f 2- $i
done
其次,向cut
传递一个参数,该参数应为文件名。
您从$file
读取数据并将其用作文件名。这些数据实际上是文件名吗?
考虑:
$ echo a,b,c,d >file
$ cat file
a,b,c,d
$ a=`cat file`
$ echo "$a"
a,b,c,d
$ cut -d , -f 2- file
b,c,d
$ cut -d , -f 2- "$a"
cut: a,b,c,d: No such file or directory
也许你想要:
cut -d , -f 2- "$file"
第三,for
循环将"$file"
中的数据拆分为空白,而不是逐行拆分。
考虑:
$ echo 'a b,c d' >file
$ cat file
a b,c d
$ for i in `cat file`; do echo "[$i]"; done
[a]
[b,c]
[d]
$
也许你想读单独的一行?
while read i; do
: ...
done <file