当从另一个脚本执行 bash 计数器脚本时,如何使该脚本正常工作?

当从另一个脚本执行 bash 计数器脚本时,如何使该脚本正常工作?

我有一个使用 wget 的脚本,并将输出保存到一个名称为递增变量的文件中。

计数器.sh:

number=1
for i in $(cat file)
do
wget $i -S -O $number.html 2>&1
((number++))

sleep 1   
echo 'done'

done

我可以从命令行运行该脚本并且它运行得很好。但是,当我从另一个脚本中执行它时:

脚本2:

./counter.sh

我收到以下输出:

scripts/counter.sh: 5: scripts/counter.sh: number++: not found
done
scripts/counter.sh: 5: scripts/counter.sh: number++: not found
done
scripts/counter.sh: 5: scripts/counter.sh: number++: not found
done
scripts/counter.sh: 5: scripts/counter.sh: number++: not found
done

由于某种原因,当从另一个脚本中执行时,计数器 ++ 不起作用。我怎样才能解决这个问题?

答案1

看起来您的 shell 正在尝试对变量进行操作,number++而不是对变量进行算术运算number。这可能是因为++您的 shell 不支持该语法。

为了解决这个问题,您可以指定您希望脚本执行的 shell。为此,请添加

#!/bin/bash

作为脚本的第一行。

答案2

使用

#!/bin/bash

或者

bash counter.sh

或使其兼容

#!/bin/sh

一般来说,应该使用 IDE 或将代码粘贴到https://www.shellcheck.net以避免此类问题。

相关内容