0

我正在尝试在 FreeBSD 的 /bin/sh 中编写一个安装 shell 脚本。

DialogOptions='--trim --ok-label "Next" --backtitle "Workstation Installer"'

对话框 $DialogOptions --max-input 4 --cancel-label "Abort" --inputbox "输入内容"

以上退出并出现错误

错误:未知选项安装程序。

我认为当我将 DialogOptions 变量传递给对话框时,它会以不同的方式解释引号。我不知道为什么会这样。

我还注意到 ok 标签显示“Next”而不是 Next。

4

2 回答 2

1

shell而言,它的行为应该完全符合您的预期:

$ DialogOptions='--trim --ok-label "Next" --backtitle "Workstation Installer"'

此时,变量“DialogOptions”包含单个字符串

$ echo ..$DialogOptions..
..--trim --ok-label "Next" --backtitle "Workstation Installer"..

echo 命令看到五个参数:--trim、--ok-label、“Next”--backtitle 和“Workstation Installer”

于 2013-01-22T22:43:47.000 回答
0

为了做你想做的事,你需要使用一个数组,这将使你引用的参数保持不分裂:

DialogOptions=(--trim --ok-label "Next" --backtitle "Workstation Installer")
dialog "${DialogOptions[@]}" --max-input 4 --cancel-label "Abort" --inputbox "Enter stuff"

您还需要使用支持数组的 shell:bash/ksh/zsh。否则,您必须使用eval

DialogOptions='--trim --ok-label Next --backtitle "Workstation Installer"'
eval "dialog $DialogOptions --max-input 4 --cancel-label Abort --inputbox \"Enter stuff\""

请注意,您不必引用不包含任何字符的字符串$IFS

于 2013-01-22T23:15:33.683 回答