sh build脚本语句 如果加-d编译执行a.sh脚本,否则直接输出123
时间: 2024-02-28 16:52:15 浏览: 63
您可以使用以下的 bash 脚本语句实现:
```
#!/bin/bash
if [ "$1" = "-d" ]; then
sh a.sh
else
echo "123"
fi
```
如果您在终端中输入 `sh build.sh -d`,则会执行 `a.sh` 脚本;否则,会直接输出 `123`。
相关问题
.sh这么写有什么问题 #!/bin/bash echo "具有以下命令:" echo "设置环境变量为:seten2023" echo "设置环境变量为:seten2017" echo "编译并打包启动文件:bp" if [ $1 = "seten2023" ]; then echo "环境变量设置为2023版本" source /opt/pkg/petalinux/settings.sh source /opt/Xilinx/Vitis_HLS/2023.1/settings64.sh beep fi if [ $1 = "seten2017" ]; then echo "环境变量设置为2017版本" source /opt/pkg/petalinux/settings.sh source /opt/Xilinx/Vitis_HLS/2023.1/settings64.sh beep fi if [ $1 = "bp" ]; then echo "开始编译,编译完成后将生成启动文件" petalinux-build petalinux-package --boot --fsbl ./images/linux/zynq_fsbl.elf --fpga --force --u-boot beep fi
这个 .sh 文件主要是用来设置环境变量和编译打包启动文件的,其中包含了三个命令:seten2023、seten2017 和 bp。从代码中可以看出,如果用户在命令行中输入了正确的参数,将会执行对应的命令。
然而,这个 .sh 文件可能存在一些问题:
1. 在执行 if 语句前,应该先检查用户是否提供了正确的参数,以避免出现未定义变量的情况。可以使用 $1 变量来获取用户提供的第一个参数。如果用户没有提供参数,则应该输出错误信息并退出脚本。
2. 在执行 seten2023 和 seten2017 命令时,代码中使用了相同的 settings64.sh 文件。这可能会导致环境变量被覆盖,从而导致意外的行为。如果您要切换不同的环境,请使用不同的 settings64.sh 文件。
3. 在执行 petalinux-build 命令时,应该检查是否存在错误并输出相关信息。如果编译失败,应该输出错误信息并退出脚本。
4. 在执行 petalinux-package 命令时,应该检查是否存在错误并输出相关信息。如果打包失败,应该输出错误信息并退出脚本。
5. 在执行 beep 命令时,应该检查是否存在该命令并输出相关信息。如果系统没有安装 beep 命令,则应该使用其他命令或输出错误信息。
总之,编写 .sh 文件时应该注意代码的健壮性和错误处理。
try { sh 'revive -config revive.toml ./...' } catch (Exception e) { currentBuild.result = 'FAILURE' error("revive 代码校验未通过,终止流水线") } 不能终止流水线 完成的流水线脚本
根据您提供的信息,可能是因为 `sh` 命令返回的退出码不是非零值,导致 Jenkins 不认为此次执行是失败的。您可以尝试使用 `returnStatus` 参数来获取命令的退出码,并根据退出码来判断是否终止流水线,具体步骤如下:
```
def reviveResult = sh(returnStatus: true, script: 'revive -config revive.toml ./...')
if (reviveResult != 0) {
currentBuild.result = 'FAILURE'
error("revive 代码校验未通过,终止流水线")
}
```
这里使用 `sh` 命令的 `returnStatus` 参数来获取命令的退出码,然后使用 `if` 语句判断退出码是否为非零值。如果退出码为非零值,则将当前流水线的结果设置为 FAILURE,并使用 `error` 函数抛出异常信息,以便在 Jenkins 控制台中显示错误信息。
请注意,这里使用的是 `def` 关键字来定义一个变量 `reviveResult`,以便在后续的判断语句中使用。
阅读全文