从脚本向新终端发送一系列命令

时间:2018-01-13 02:55:20

标签: bash shell scripting

我有一个脚本,我想在最后添加一个关机计时器,我想在新的终端窗口中运行倒计时,所以我可以取消它,因为脚本通常会在后台运行。

这是问题,

一个只包含以下内容的简单脚本

secs=$((60))
while [ $secs -gt 0 ]; do
   echo -ne "$secs\033[0K\r"
   sleep 1
   : $((secs--))
done
shutdown now

工作正常,但如果我尝试将其发送到像这样的新终端

gnome-terminal -e "bash -c
'secs=$((60))
while [ $secs -gt 0 ]; do
   echo -ne \"$secs\033[0K\r\"
   sleep 1
   : $((secs--))
done
shutdown now'"

它失败了,只是关闭了。如果我删除关机行,我会收到此错误:

Option “-e” is deprecated and might be removed in a later version of gnome-terminal.
Use “-- ” to terminate the options and put the command line to execute after it.

有谁知道如何解决这个问题?

感谢

1 个答案:

答案 0 :(得分:0)

执行此操作的简便方法是导出函数:

countdown() {
  secs=60
  while (( secs > 0 )); do
     printf '%s\033[0K\r' "$secs"
     sleep 1
     ((secs--))
  done
  shutdown now
}
export -f countdown

gnome-terminal -- bash -c countdown