acdsee66 2022-11-13 15:19 采纳率: 50%
浏览 10

关于linux循环while无法输出$@的值

问题遇到的现象和发生背景

编写shell脚本,想通过while循环输出$@的值,但总是报”模糊的重定向“,请问写法有什么不对吗?
(使用for循环没问题)

用代码块功能插入代码,请勿粘贴截图
#!/bin/bash
while read n
do
    echo $n
done < $@

运行结果及报错内容

执行:bash c.sh aa bb

c.sh:行9: $@: 模糊的重定向

我想要达到的结果

请教下我的写法有什么问题吗?

另外while输出$*的时候,会出现如下结果,为什么最后会加上“没有那个文件或目录”。望指点!

  • 写回答

1条回答 默认 最新

  • 晚风_END 云原生领域优质创作者 2022-11-15 11:30
    关注
    
    $@是参数列表,因此,应该使用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函数了嘛,参数列表不是文件,自然是没有那个文件或者目录。
    请采纳。

    评论

报告相同问题?

问题事件

  • 修改了问题 11月13日
  • 创建了问题 11月13日

悬赏问题

  • ¥15 基于卷积神经网络的声纹识别
  • ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
  • ¥100 为什么这个恒流源电路不能恒流?
  • ¥15 有偿求跨组件数据流路径图
  • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值
  • ¥15 我想咨询一下路面纹理三维点云数据处理的一些问题,上传的坐标文件里是怎么对无序点进行编号的,以及xy坐标在处理的时候是进行整体模型分片处理的吗
  • ¥15 CSAPPattacklab
  • ¥15 一直显示正在等待HID—ISP
  • ¥15 Python turtle 画图
  • ¥15 stm32开发clion时遇到的编译问题