bash的新手 我试图写简单的while循环:
position: absolute
以select * form table where column like '%a[|]b%'
执行此操作
给了我这个警告
let i = $1
while(i < 4); do
echo Hi
((i++))
done
问题:因为变量必须是文件或目录吗? 怎么解决这个问题?
编辑:如果我想循环而我&lt; $ 1 + $ 2,当$ 1和$ 2是数字时,如何写它&gt;
答案 0 :(得分:5)
你需要一个算术语句(两个括号),而不是一个子shell。这里不需要let
。
i=$1
while (( i < 4 )); do
...
done
while
的参数是一个shell命令。 ( i < 4 )
启动一个运行命令i
的子shell,从名为4
的文件中读取输入。在查找命令之前处理重定向,这解释了为什么没有出现i: command not found
错误。
您只需将4
替换为您要使用的表达式:
while (( i < $1 + $2 )); do
答案 1 :(得分:4)
i=$1
while [ "$i" -le 4 ]
do
echo $i
i=$((i+1))
done
有关bash条件的更多信息: https://linuxacademy.com/blog/linux/conditions-in-bash-scripting-if-statements/