为什么这个脚本在if语句中执行字符串:
#!/bin/bash
FILES="*"
STRING=''
for f in $FILES
do
if ["$STRING" = ""]
then
echo first
STRING='hello'
else
STRING="$STRING hello"
fi
done
echo $STRING
使用sh script.sh
输出运行时
first
lesscd.sh: line 7: [hello: command not found
lesscd.sh: line 7: [hello hello: command not found
lesscd.sh: line 7: [hello hello hello: command not found
lesscd.sh: line 7: [hello hello hello hello: command not found
lesscd.sh: line 7: [hello hello hello hello hello: command not found
hello hello hello hello hello hello
P.S。首次尝试shell脚本
感谢
答案 0 :(得分:6)
您正在尝试执行命令[hello
。在[
之后添加一个空格,以便将其视为测试。
for f in $FILES
do
if [ "$STRING" = "" ]
then
echo first
STRING='hello'
else
STRING="$STRING hello"
fi
done
答案 1 :(得分:2)
假设行'echo first'仅用于调试,你可以用以下方法实现同样的目的:
STRING=$STRING${STRING:+ }hello
(也就是说,上面的行会产生与if语句相同的结果,但不会回显'first')
如果$ STRING为空或null,则表达式'$ {STRING:+}'的计算结果为空,否则计算结果为空格。