bash:不明白这两种方法的区别 - 应该是一样的,但不是......?
bash: don't understand the difference between these two methods - should be the same, but isn't...?
我有一个文件:$ cat /tmp/test.txt<br>
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 "Choose toppings:" 35 35 5 $(cat /tmp/test.txt | tr -d '\n')" 以便给出正确的结果?
使用 --file 选项:
dialog --menu "Choose toppings:" 35 35 5 --file /tmp/test.txt
正如你所说,通常还有另一种方式......
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
)
我有一个文件:$ cat /tmp/test.txt<br>
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 "Choose toppings:" 35 35 5 $(cat /tmp/test.txt | tr -d '\n')" 以便给出正确的结果?
使用 --file 选项:
dialog --menu "Choose toppings:" 35 35 5 --file /tmp/test.txt
正如你所说,通常还有另一种方式......
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
)