Linux 在bash脚本中,为什么要执行这个字符串的值?
为什么此脚本要执行if语句中的字符串:Linux 在bash脚本中,为什么要执行这个字符串的值?,linux,bash,unix,shell,Linux,Bash,Unix,Shell,为什么此脚本要执行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:
#!/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、 第一次尝试shell脚本谢谢您正在尝试执行命令
[hello
。请在[
后面加一个空格,以便将其作为测试重新登录
for f in $FILES
do
if [ "$STRING" = "" ]
then
echo first
STRING='hello'
else
STRING="$STRING hello"
fi
done
假设“echo first”行仅用于调试,您可以通过以下方式实现相同的功能: STRING=$STRING${STRING:+ }hello STRING=$STRING${STRING:+}您好 (也就是说,上面的行将产生与if语句相同的结果,但不会回显'first') 如果$STRING为空或null,则表达式“${STRING:+}”的计算结果为空,否则它的计算结果为空格