为什么这个命令会启动无限的终端以及如何使其工作?

为什么这个命令会启动无限的终端以及如何使其工作?
#!/bin/bash
gnome-terminal --command='/home/user23/bin/n-youtube-dl "$1"'

我想将传递给此脚本的参数传递给在终端中启动的其他脚本。但这会启动无休止的 gnome 终端。

你能解释一下为什么会这样以及如何实现这一点吗?

如果重要的话,我正在运行 zsh,它有我的主 shell,那么我猜终端会在 zsh 中启动脚本。

更新:

#!/bin/bash
gnome-terminal --command='echo "WTF"'
read -p "Press [Enter] key"

只是关闭术语的速度比我能看到的速度快得多。它不是应该停止吗?用 again 替换也是一样WTF$1没有重生。

答案1

要在 中运行命令gnome-terminal并安全地向其传递参数,您应该使用选项-x,因为这样可以避免由两个 shell 解析该行。

#!/usr/bin/env bash
gnome-terminal -x youtube-dl "$@"

答案2

#!/bin/bash
gnome-terminal -x bash -c "cd ~/Downloads/youtube; youtube-dl \"$@\"; read -p \"Press [Enter] key\""

这就是我实际解决这个问题的方法。

相关内容