编写shell脚本,想通过while循环输出$@的值,但总是报”模糊的重定向“,请问写法有什么不对吗?
(使用for循环没问题)
#!/bin/bash
while read n
do
echo $n
done < $@
执行:bash c.sh aa bb
c.sh:行9: $@: 模糊的重定向
请教下我的写法有什么问题吗?
另外while输出$*的时候,会出现如下结果,为什么最后会加上“没有那个文件或目录”。望指点!
$@是参数列表,因此,应该使用for循环而不是while条件循环,正确的代码如下;
#!/bin/bash
#! authon zsk
for i in "$@"
do
echo $i
done
此脚本执行的例子如下:
[root@node3 ~]# bash test.sh dsf dsfdsfds dfds 1 2 3
dsf
dsfdsfds
dfds
1
2
3
上面的例子是随意输入的几个参数,for循环会按顺序打印参数。你写的while循环是读取某个文件,read函数了嘛,参数列表不是文件,自然是没有那个文件或者目录。
请采纳。