Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux Zenity--带字符串变量的文本_Linux_Bash - Fatal编程技术网

Linux Zenity--带字符串变量的文本

Linux Zenity--带字符串变量的文本,linux,bash,Linux,Bash,我想知道如何将包含空格的字符串传递给Zenity作为文本参数,因为我当前的方法正在截断/无法计算第一个空格后的所有文本 以下是一个MVP,它显示了问题: 剧本 输出 使用“$*”代替“$@” “$@”手册(重点): 展开到位置参数,从一开始当展开发生在双引号内时,每个参数展开为一个单独的单词。也就是说,“$@”相当于“$1”$2”。。。如果双引号表达式出现在一个单词中,则第一个参数的展开与原始单词的开头部分连接,最后一个参数的展开与原始单词的最后部分连接。如果没有位置参数,“$@”和$@将展开为

我想知道如何将包含空格的字符串传递给Zenity作为文本参数,因为我当前的方法正在截断/无法计算第一个空格后的所有文本

以下是一个MVP,它显示了问题:

剧本 输出 使用
“$*”
代替
“$@”

“$@”
手册(重点):

展开到位置参数,从一开始当展开发生在双引号内时,每个参数展开为一个单独的单词。也就是说,“$@”相当于“$1”$2”。。。如果双引号表达式出现在一个单词中,则第一个参数的展开与原始单词的开头部分连接,最后一个参数的展开与原始单词的最后部分连接。如果没有位置参数,“$@”和$@将展开为零(即,它们将被删除)

对于
“$*”

展开到位置参数,从一开始。如果展开不在双引号内,则每个位置参数将展开为一个单独的字。在执行该操作的上下文中,这些单词将进一步进行单词拆分和路径名扩展。当展开发生在双引号内时,它将展开为一个单词,每个参数的值由IFS特殊变量的第一个字符分隔。也就是说,“$*”相当于“$1c$2c…”,其中c是IFS变量值的第一个字符。如果未设置IFS,则参数之间用空格分隔。如果IFS为null,则参数将在不插入分隔符的情况下联接


或者,您可以引用
${a}
a
作为单个参数传递,而不是在空格上拆分。

在调用站点使用
“${a}”
可以解决此处的特定问题(尽管如果需要将多个参数组合到zenity单个参数中,
“$*”
建议也很有用)。是否要将单个参数传递给
test\u func
,并将其作为
zenity
的`
--text
选项的参数?或者将N个参数传递给
test_func
,并使它们都成为
--text
选项的(单个)参数?
#!/bin/bash

a="test test test"
test_func() {
  echo "$@"
  $(zenity --info --text "test test")
  $(zenity --info --text "$@")
}

test_func ${a}
$> test test test
$> (zenity info window with test test as text)
$> (zenity info window with test) *** should contain "test test test"