作为一名 (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 +x
set -v
set -x
:显示执行时的命令及其参数。set +x
:关闭调试set -v
:在读取 shell 输入行时显示它们。
操作方法:在 Linux 或 UNIX 下调试 Shell 脚本
1. 使用
-x
选项调试 shell 脚本使用 -x 选项运行 shell 脚本。
$ bash -x script-name $ bash -x domains.sh
set
2.内置命令的使用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 脚本
进一步阅读
- Linux 的 Bash 命令行的 AZ 索引- 与 Bash 命令行相关的所有事物的绝佳参考。
- 放- 操作 shell 变量和函数。
答案2
放
set -x
在你想要调试信息开始显示的地方
set +x
你想把它关掉在哪里。我不能保证你看到的东西总是一目了然的,但一段时间后你就可以习惯 id。
答案3
这是检查 shell 脚本语法的简单方法:
在此网站上,在线语法检查器会标记行并显示由于语法不正确而导致的错误
根据其他答案的建议,您可以尝试set -x
分别set +x
启用和禁用调试模式来跟踪脚本的执行。