如何在bash命令行中输入多行命令

arc*_*ber 7 command-line bash

我正在对脚本进行故障排除,我想手动输入每一行,逐行查找错误。

我的脚本有一个 if 语句:

if [ -d dir1 ]; then
    rm -rf dir1
fi
Run Code Online (Sandbox Code Playgroud)

所以我尝试输入一行命令

$ if [ -d dir1 ]; then rm -rf dir1 fi
> 
Run Code Online (Sandbox Code Playgroud)

我尝试了 Ctrl-D 但收到消息:bash: 语法错误:意外的文件结尾

那么如何在命令行中输入这个if语句呢?

Joh*_*ohn 16

简短回答:后面需要一个分号rm -rf dir1

查看实际效果:if完全按照脚本中显示的方式输入块:

$ if [ -d dir1 ]; then
>     rm -rf dir1
> fi
Run Code Online (Sandbox Code Playgroud)

运行后,使用向上箭头回调最后一个命令,它将if在一行上显示整个块:

$ if [ -d dir1 ]; then rm -rf dir1; fi
Run Code Online (Sandbox Code Playgroud)

shell 需要某种方式来解释 if 块内命令之间的中断。它不能简单地将其视为一次执行的单个命令,因此分号充当这些中断。