我正在尝试创建一堆文件(基于句子的数字)。但它没有用。
#!/bin/sh
LIMIT=$1
for ((a=1; a <= LIMIT; a++))
do
mkdir zips
cd zips
touch $a
done
但它返回了这个
esauer@ubuntu:~/repo/filecheck/src/plugins/archive$ ./generate_zips.sh 10
./generate_zips.sh: 4: ./generate_zips.sh: Syntax error: Bad for loop variable
我无法弄清楚什么是错的......
答案 0 :(得分:3)
你的shebang是错的 - 你正在使用bash
功能(双重parens中的“C风格”for循环),但你指定了/bin/sh
。将其更改为/bin/bash
。
你也可以改变你的for循环,这样它就不会使用bash
的特殊功能(参见其他答案)。这有点便携,因为并非所有类Unix系统都有/bin/bash
(但几乎所有系统都有/bin/sh
)。但是,bash
也非常广泛(例如,它是大多数Linux发行版中的标准shell)。
答案 1 :(得分:0)
尝试:
LIMIT=$1
for a in $(seq 1 $LIMIT)
do
mkdir -p zips
touch zips/$a
done
答案 2 :(得分:0)
我可能会这样做......
#!/bin/sh
mkdir zips
cd zips
a=1; while [ $a -le $1 ]; do
touch $a
a=$(($a + 1))
done
有一些特定于bash的方法有点短,但这适用于任何Posix shell。