我有一个使用 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以避免此类问题。