shell bash:语法错误:循环变量[重复]错误

oxalkeyp  于 2023-05-01  发布在  Shell
关注(0)|答案(1)|浏览(134)

此问题已在此处有答案

Bash script process substitution Syntax error: "(" unexpected(3个答案)
3天前关闭。
这失败了:

#!/bin/bash

N_TIMES="$1"
for ((n = 0; n < $N_TIMES; n++)); do
  # command
done

手动设置变量也会失败:

#!/bin/bash

N_TIMES=10
for ((n = 0; n < $N_TIMES; n++)); do
  # command
done

两人返回:

Syntax error: Bad for loop variable

为什么循环不能将变量作为一个数字读取以进行迭代?应该如何读取第一个参数作为运行命令的次数?

2nc8po8w

2nc8po8w1#


如果使用sh script,则以POSIX模式传递脚本,即使使用bash shebang #!/bin/bash
shebang只在你没有自己启动解释器的时候使用:当你自己启动一个解释器时,操作系统不必为你做这件事,所以没有什么会看shebang。
这与使用c编译器编译c++非常相似。

所以不要用

sh script.sh

执行脚本。


相反,请执行以下操作:

chmod +x script.sh
./script.sh

在我的Debian like OS上:

$ ls -l /bin/sh
lrwxrwxrwx 1 root root 4 oct.  28 04:48 /bin/sh -> dash*

此外,don't use UPPER case variables

最后

#!/usr/bin/env bash

n_times=10
for ((n=0; n < n_times; n++)); do
  # command
done

在算术运算中不需要符号$

相关问题