【问题标题】:macos shell prompt for input then executemacos shell 提示输入然后执行
【发布时间】:2021-11-21 17:25:05
【问题描述】:

执行最终输出我缺少什么?这样做的原因是它提示输入 url 并构建完整的命令,如果我复制并粘贴到终端,该命令也可以工作,但执行它所做的只是显示命令而不执行它?

 #! /bin/bash

    echo "paste youtube url"
    read URL
    printf "yt-dlp -f 'bv*[ext=mp4]+ba[ext=m4a]/b[ext=mp4] / bv*+ba/b' $URL \n"

当我跑步时

 #! /bin/bash

    echo "paste youtube url"
    read URL
"yt-dlp -f 'bv*[ext=mp4]+ba[ext=m4a]/b[ext=mp4] / bv*+ba/b' $URL"

我得到没有这样的文件或目录,即使输出可以被复制并在另一个终端中运行并且运行良好。

【问题讨论】:

  • 您正在打印命令 .. 字面意思 .. man printf
  • 我尝试过不使用 printf 和 echo,如何让它执行?
  • yt-dlp -f 'bv*[ext=mp4]+ba[ext=m4a]/b[ext=mp4] / bv*+ba/b' $URL 你只试过那个..没有回声..没有别的..?
  • 如果我删除 printf 并将完整的命令放入 " " 我得到没有这样的文件或目录。但是,如果我复制它试图执行的确切命令,它确实执行得很好。我只是无法从脚本中运行它。
  • 查看我对主帖的更新

标签: macos shell


【解决方案1】:
yt-dlp -f 'bv*[ext=mp4]+ba[ext=m4a]/b[ext=mp4] / bv*+ba/b' $URL 

删除print 命令并删除双引号 -- 你可以在$URL 周围使用它们 --> 如果你愿意的话,"$URL" .. 但它们不是必需的。

#! /bin/bash

echo "paste youtube url"
read URL
yt-dlp -f 'bv*[ext=mp4]+ba[ext=m4a]/b[ext=mp4] / bv*+ba/b' $URL

在 OS12 Monterey 上测试并运行。

【讨论】:

    【解决方案2】:

    这行得通,我的引号错了

    #! /bin/bash
    
    echo "paste youtube url"
    read URL
    yt-dlp -f 'bv*[ext=mp4]+ba[ext=m4a]/b[ext=mp4] / bv*+ba/b' "$URL"
    

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-04-05
    • 2021-05-15
    • 2020-06-01
    • 2012-11-17
    • 2020-09-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多