【问题标题】:Bash dialog - checklist options with spaces from a fileBash 对话框 - 带有来自文件的空格的清单选项
【发布时间】:2013-04-25 10:25:19
【问题描述】:

我尝试在 bash 脚本中创建一个对话框清单。我必须从文件的行中生成选项。我认为问题在于我的条目包含空格,因此许多人考虑了一个条目。

对话框给我这个错误:

Error: Expected 3 arguments, found only 1. Use --help to list options.

这是我的代码:

while read entry; do
    option+=(0 "$entry" "off")
    echo "$option"
done < "$tempfilelist"

dialog --backtitle "Myscript"  \
       --title "Mytitle" \
       --checklist "Mytext" 10 70 4 "${option[@]}"

我什至尝试在循环中加上引号,如下所示:

"'$entry'"

但没有变化。

这是我的文件(tempfilelist):

Wed Apr 24 14:17:20 2013 20130423.maya.txt
Wed Apr 24 14:17:41 2013 maya.txt

如何让这个脚本工作?

谢谢!

【问题讨论】:

  • 我做 ./my_script.sh。我不知道你为什么要争论。我不需要它们。它们来自文件(tempfilelist)
  • 上面发布的代码对我有用,/bin/sh 链接到bash 3.2.48。
  • @chepner : 你是怎么做到的?你的对话版本是哪个?
  • 我有对话框 1.1-20120215。一个想法:你确定option 正在被填充吗?如果为空,"${options[@]}" 将扩展为单个空字符串。
  • 是的,选项不为空。我认为问题在于我的字符串中的空格。 args[0]="0" args[1]="Wed" args[2]="Apr" args[3]="24" ...怎么处理?

标签: bash parameters dialog escaping


【解决方案1】:

bash 没有运行您的脚本;它由dash 运行。将脚本的第一行从

#!/bin/sh

#!/bin/bash

【讨论】:

  • 是的,我是#!/bin/sh。我改成了#!/usr/bin/env bash 非常感谢!
猜你喜欢
  • 2013-05-29
  • 2012-04-08
  • 2014-03-11
  • 1970-01-01
  • 1970-01-01
  • 2012-01-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多