Linux如何记录运行的Bash命令?

通常情况下,我会写一个脚本来处理数据,脚本中难免会有错误的地方,如果能记录下真实运行的命令,就能检查是否有bug存在,也便于以后查阅。因此,我在网上搜索到了一些解决方法。

(1) 在脚本中添加set +o xtrace/sex -x 或使用-x选项执行脚本 bash -x script.sh

上述三种方式都可以在执行脚本的同时,输出运行的命令,并在命令前用+标记。比如:

bash -x script.sh > stdout.log 2> cmd.log

可以把脚本的输出保存在stdout.log文件中,把运行过的命令保存在cmd.log中。

(2) 另一种思路是把要运行的命令当成一个字符串或者数组,分成两步来实现输出命令和执行命令的目的。比如:
myArray=(some commands)

#将要执行的命令保存成数组myArray
echo “${myArray[@]}”

#输出要执行的命令
“${myArray[@]}”

#执行要执行的命令
又比如:
myString=‘some commands’

#将要执行的命令保存成数组myString
echo $myString

#输出要执行的命令
eval $myString

#执行要执行的命令

参考:(1)https://stackoverflow.com/questions/5750450/bash-print-each-command-before-executing?noredirect=1&lq=1
(2)https://stackoverflow.com/questions/2853803/in-a-shell-script-echo-shell-commands-as-they-are-executed
(3)https://askubuntu.com/questions/763332/execute-a-command-stored-into-a-variable
(4)https://stackoverflow.com/questions/2005192/how-to-execute-a-bash-command-stored-as-a-string-with-quotes-and-asterisk
(5)http://mywiki.wooledge.org/BashFAQ/050

### 如何在 Linux运行 Bash 脚本 要在 Linux 系统中运行 Bash 脚本,可以采用多种方法来实现这一目标。以下是几种常见的运行方式及其对应的命令示例。 #### 方法一:通过指定解析器运行脚本 如果脚本文件未赋予可执行权限或者希望显式调用特定的 Shell 解析器,则可以通过 `bash` 命令直接运行脚本文件。这种方式适用于任何类型的脚本文件,无论其是否具有可执行权限。 ```bash bash test.sh ``` 这种方法会强制使用 Bash 来解析和执行脚本内容[^3]。 --- #### 方法二:赋予脚本可执行权限并通过路径运行脚本文件已经定义了 Shebang 行(例如 `#!/bin/bash`),并且被赋予了可执行权限时,可以直接通过相对路径或绝对路径运行脚本。这通常需要先设置文件权限: ```bash chmod +x test.sh ./test.sh ``` 上述操作的第一步是授予脚本文件执行权限,第二步则是通过当前工作目录下的路径启动脚本。 --- #### 方法三:源入脚本 (Sourcing the Script) 有时可能不希望创建一个新的子进程去运行脚本,而是让脚本中的变量、函数等更改影响到当前的 Shell 环境。这种情况下可以使用点号 (`.`) 或者 `source` 命令加载脚本: ```bash . test.sh # 或者 source test.sh ``` 此方法不会开启新的 Shell 进程,而是在现有环境中逐行执行脚本的内容。 --- #### 使用 Wait 控制并发任务 对于复杂的脚本场景,尤其是涉及多个后台任务的情况,可以借助 `wait` 命令确保所有子进程完成后再继续后续逻辑处理。例如,在脚本中启动若干后台任务后加入如下语句以同步流程: ```bash task1 & task2 & wait echo "All tasks are done." ``` 这里 `wait` 将阻塞父进程直到所有的子进程结束为止[^4]。 --- ### 总结 以上介绍了三种主要的方式用来在 Linux运行 bash 脚本,并简单提及了一个有关控制并发的任务管理技巧。每种方式都有各自适用场合,请依据具体需求选取合适的方法。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

sta@ma@brain

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值