Bash

如何將變數傳遞給 gnome-terminal 命令

  • November 25, 2019

我正在嘗試使用變數來構造--commandarg gnome-terminal

我的 shell 腳本如下所示:

buildId="aa-bb-cc"
versionCode="123456"
daily="daily"

gnome-terminal -e 'sh -c "while true; do
       python acra.py $versionCode $buildId 0 $daily
       sleep 600 # 10 mins
   done"'

但是當我執行這個腳本時,新終端打開但它無法辨識這些變數,我只sys.argv = ['acra.py', '0']在我的 python 腳本中接收,所以我猜 cmd 的執行就像:

python acra.py 0

那麼在這種情況下如何使用變數呢?

假設其gnome-terminal行為類似於xterm

gnome-terminal -e sh -c 'some commands here' sh "$variable1" "$variable2" "etc."

命令行末尾的字元串將在sh -c腳本中以$1$2$3等形式出現。腳本的第一個參數 stringsh將被放置在$0shell 中並在錯誤消息中使用。

在你的情況下:

#!/bin/sh

buildId="aa-bb-cc"
versionCode="123456"
daily="daily"

gnome-terminal -e sh -c '
   while true; do
       python acra.py "$1" "$2" 0 "$3"
       sleep 600
   done' sh "$versionCode" "$buildId" "$daily"

這假定acra.py腳本在目前工作目錄中可用。

引用自:https://unix.stackexchange.com/questions/468685