【问题标题】:How to use paste command in the shell file如何在 shell 文件中使用粘贴命令
【发布时间】: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')'

有人知道导致此问题的原因吗?

【问题讨论】:

  • 您是否使用支持&lt;(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}&lt;tabChar&gt;${v2}" paste 对于您的示例文本来说太过分了,我很惊讶paste 可以“看到”@ 内的该选项987654332@。即使它有效,最好遵循约定并使用paste -d '\t' ... ......或者你真的想“加入”多行值吗?如果是这样,我认为您无法以这种方式使用变量获得想要的结果。将内容保存到临时文件中,然后放入变量中,或者最好只使用临时文件。祝你好运

标签: bash shell variables unix paste


【解决方案1】:

脚本实际上正在运行。

在你的脚本中使用 shebang。

#!/usr/bin/env bash
value_1="name1"
value_2="name2"

value_3=$(paste <(echo "$value_1") <(echo "$value_2") -d '\t')
echo "$value_3" >> test.txt

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-04-22
    • 2019-06-01
    • 2017-04-26
    • 1970-01-01
    • 2016-04-20
    • 2015-03-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多