BASH 脚本语法检查,跟踪执行?

BASH 脚本语法检查,跟踪执行?

作为一名 (Debian) Linux 新手,我想知道是否有办法跟踪 bash shell (.sh) 脚本的执行?就像在 Windows 中一样,您可以使用echo on批处理文件中的命令来触发它。

这是我的第一个“unix”脚本,但我想知道它是否能按预期运行:

#!/bin/bash  
# switch maintenance mode off and go live with your ownCloud  
occpath='/var/www/owncloud'  
htuser='www-data'  
alias occ-do=sudo -u $htuser php $occpath/occ  
echo info: Switching to live-mode ..  
occ-do maintenance:mode --on`  

我尝试创建的行是这样的sudo -u www-data php /var/www/owncloud/occ(occ 是应该执行的,我们假设我不需要该php部分的路径)。

这会起作用吗?语法上有什么错误吗?别忘了我关于以下执行的问题。

答案1

有没有办法跟踪 bash shell (.sh) 脚本的执行?

您可以使用和set -x,如下所述。set +xset -v

  • set -x:显示执行时的命令及其参数。
  • set +x:关闭调试
  • set -v:在读取 shell 输入行时显示它们。

操作方法:在 Linux 或 UNIX 下调试 Shell 脚本

1. 使用-x选项调试 shell 脚本

使用 -x 选项运行 shell 脚本。

$ bash -x script-name
$ bash -x domains.sh

set2.内置命令的使用

Bash shell 提供调试选项,可以使用 set 命令打开或关闭。

  • set -x :执行时显示命令及其参数。
  • set -v :显示读取的 shell 输入行。

您可以在 shell 脚本本身中使用以上两个命令:

#!/bin/bash
clear
# turn on debug mode
set -x
for f in *
do
   file $f
done
# turn OFF debug mode
set +x
ls
# more commands

您可以替换标准 Shebang 行:

#!/bin/bash

使用以下代码(用于调试):

#!/bin/bash -xv

来源操作方法:在 Linux 或 UNIX 下调试 Shell 脚本


进一步阅读

答案2

set -x

在你想要调试信息开始显示的地方

set +x

你想把它关掉在哪里。我不能保证你看到的东西总是一目了然的,但一段时间后你就可以习惯 id。

答案3

这是检查 shell 脚本语法的简单方法:

https://www.shellcheck.net/

在此网站上,在线语法检查器会标记行并显示由于语法不正确而导致的错误

根据其他答案的建议,您可以尝试set -x分别set +x启用和禁用调试模式来跟踪脚本的执行。

相关内容