【发布时间】:2020-02-14 08:41:18
【问题描述】:
我有两个变量,我想将它们并排粘贴在两列中。问题是该命令在 Unix 终端中运行,但在我将其作为作业提交时不在 shell 脚本中。下面是脚本:
value_1="name1"
value_2="name2"
value_3=$(paste <(echo "$value_1") <(echo "$value_2") -d '\t')
echo "$value_3" >> test.txt
它给出了两个错误:
- syntax error near unexpected token `('
- `paste <(echo "$value_1") <(echo "$value_2") -d '\t')'
有人知道导致此问题的原因吗?
【问题讨论】:
-
您是否使用支持
<(command)语法的shell?并非所有人都这样做。 -
value_3="$value_1$value_2"工作吗?您收到的错误消息看起来像是在使用#!/bin/sh。您需要使用较新的 shell,通常是#!/bin/bash。祝你好运。 -
您希望
-d '\t'做什么?祝你好运。 -
@shellter,谢谢,它适用于 #!/bin/bash!你怎么知道的?! -d '\t' 用于用 TAB 分隔。
-
#!/bin/bash怎么样?在这里读了几年的 Qs ;-) 。如果您需要 $v1 a 和 $v2 之间的选项卡,那么只需将它放在那里,v3="${v1}<tabChar>${v2}"paste对于您的示例文本来说太过分了,我很惊讶paste可以“看到”@ 内的该选项987654332@。即使它有效,最好遵循约定并使用paste -d '\t' .........或者你真的想“加入”多行值吗?如果是这样,我认为您无法以这种方式使用变量获得想要的结果。将内容保存到临时文件中,然后放入变量中,或者最好只使用临时文件。祝你好运
标签: bash shell variables unix paste