我有一个文件:$ cat /tmp/test.txt
1 "African Countries AFR"
2 "Albania AL"
3 "Arab Countries ARB"
4 "Austria AT"
我正在尝试学习此linux实用程序,但这显然是错误的:
$ dialog --menu "Choose toppings:" 35 35 5 $(cat /tmp/test.txt)
│ │ 1 "African │ │
│ │ Countries AFR" │ │
│ │ 2 "Albania │ │
│ │ AL" 3 │ │
│ │ "Arab Countries │ │
│ │ ARB" 4 │ │
│ │ "Austria AT" │ │
所以我想我应该尝试没有换行符:
$ dialog --menu "Choose toppings:" 35 35 5 $(cat /tmp/test.txt | tr -d '\n')
但这也是错误的(与上面相同的结果)!经过很多努力之后,我决定尝试手动添加内容并将其作为参数输入命令行:
$ cat /tmp/test.txt | tr -d '\n'
1 "African Countries AFR" 2 "Albania AL" 3 "Arab Countries ARB" 4 "Austria AT"
所以这是命令行和结果:
$ dialog --menu "Choose toppings:" 30 35 5 1 "African Countries AFR" 2 "Albania AL" 3 "Arab Countries ARB" 4 "Austria AT"
│ │ 1 African Countries AFR │ │
│ │ 2 Albania AL │ │
│ │ 3 Arab Countries ARB │ │
│ │ 4 Austria AT │ │
突然结果是正确的-为什么?
我该如何修改“ dialog --menu”(选择浇头:) 35 35 5 $(cat /tmp/test.txt | tr -d'\ n')“行,以便给出正确的结果? / p>
答案 0 :(得分:1)
使用--file选项:
dialog --menu "Choose toppings:" 35 35 5 --file /tmp/test.txt
答案 1 :(得分:1)
正如您所说,通常还有另一种方式...
cat << EOF > magic
dialog --menu "Choose toppings:" 35 35 5 $(test.txt | tr '\n' ' ')
EOF
. magic
或者如果您愿意使用eval
:
eval $(cat << EOF
dialog --menu "Choose toppings:" 35 35 5 $(test.txt | tr '\n' ' ')
EOF
)