bash - Bash 中的无条件 do-done block

标签 bash shell

我在 Bash 脚本中有一段 echo 语句,我需要将其通过管道传输到 FTP 命令。我做到了,但我需要无条件地做到这一点。

所以我编写了一个虚拟的 if 语句,如下所示:

if [[ 1 -eq 1 ]]; then
  echo "..."
  # ...
fi | ftp -n

我只是尝试了一个没有条件的直接 do ... done block ,但它不喜欢那样(语法错误:完成,期待换行)。

很明显,这行得通,但是有没有一种方法可以消除 if 语句并在 Bash 中使用“匿名”或“无条件”do block ?我必须将所有输出通过管道传输到 FTP,但只能是该 block 的输出;脚本的其余部分供我的脚本实际处理。

只是好奇。

最佳答案

使用花括号来分隔 block :

{
    echo 1...
    echo 2...
} | ftp -n

或者,使用 Here Doc:

cat << EOF | ftp -n
1...
2...
EOF

关于bash - Bash 中的无条件 do-done block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53110200/

相关文章:

linux - 从 hdfs dfs -ls 命令的输出中打印文件名和文件修改日期

bash - 是否可以使用 xmlstarlet 或其他 bash 工具在 xml 文件内注释/取消注释标签

linux - 为什么 `cd ..` 反射(reflect)符号链接(symbolic link)遍历,而 `ls ..` 不反射(reflect)?

r - 使用infile bash语法运行Docker

bash - 如何将 bash 设置为 git 别名中的默认 shell?

linux - 自然排序逆序?

linux - 在 RHEL 6.4 上永久挂载 Netapp NFS 共享

bash - 从命令替换中获取退出代码

shell - 具有历史记录的 zsh 绑定(bind) key

python - 防止执行脚本时打开终端(crontab)