这是我的代码。
#!/bin/bash
set -- $(cat /home/jeevan/tempzen1.txt)
zenity "$@"
文件 tempzen1.txt 包含: --list --title FILE-SELECTOR --column serialno。 --列文件 --width 1000 --height 600 --radiolist TRUE "/home/jeevan/veryverylatest"
为什么上面的代码不起作用,而下面的代码却起作用?我只是在我的脚本中编写了 set args 并从同一个脚本中启动了 zenity,然后它就可以工作了,但为什么不从另一个文本文件中呢?
这是我的工作代码:
#!/bin/bash
set -- --list --title "FILE SELECTOR" --column serialno. --column file --width 1000 --height 600 --radiolist TRUE "/home/jeevan/very very latest"
zenity "$@"
答案1
这与您上一个问题完全相同 - 参数$@
仅包含一个参数,即--list --title "FILE SELECTOR" --column serialno. --column file --width 1000 --height 600 --radiolist TRUE "/home/jeevan/very very latest"
(是的,整个部分是一个参数,包括空格、引号等),而您想要将其拆分并传递多个参数。
解决方案再次是eval
使用命令:
set -- "$(cat /home/jeevan/tempzen1.txt)"
eval zenity "$@"
或者直接更好:
eval zenity "$(cat /home/jeevan/tempzen1.txt)"