String Bash:if语句循环
在我的bash脚本中,我有一个目录中文件的循环和一个简单的if语句来过滤特定文件。然而,它的行为并不像我预期的那样,但我不明白为什么 (我知道我可以筛选for循环表达式中已经存在的文件扩展名(String Bash:if语句循环,string,bash,loops,if-statement,String,Bash,Loops,If Statement,在我的bash脚本中,我有一个目录中文件的循环和一个简单的if语句来过滤特定文件。然而,它的行为并不像我预期的那样,但我不明白为什么 (我知道我可以筛选for循环表达式中已经存在的文件扩展名(…在“*.txt”),但在我的实际情况中,情况更复杂。) 这是我的代码: #!/bin/bash for f in "*" do echo $f if [[ $f == *"txt" ]] then echo "yes" else echo "
…在“*.txt”
),但在我的实际情况中,情况更复杂。)
这是我的代码:
#!/bin/bash
for f in "*"
do
echo $f
if [[ $f == *"txt" ]]
then
echo "yes"
else
echo "no"
fi
done
我得到的输出:
1001.txt 1002.txt 1003.txt files.csv
no
我所期望的是:
1001.txt
yes
1002.txt
yes
1003.txt
yes
files.csv
no
脚本中错误引用的问题。在
glob
的顶部有一个额外的引号,而在echo
中缺少一个引号
这样做:
for f in *
do
echo "$f"
if [[ $f == *"txt" ]]
then
echo "yes"
else
echo "no"
fi
done
- “*”中f的
将只循环一次
作为文本f
*
- 不带引号的
将展开echo$f
,以输出当前目录中所有匹配的文件/目录*