所以我有一些代码,如果字符串的第一个字符不是或是某个字符,我只想做while循环。
while IFS=$'\t' read -r -a myArray
do
like=${myArray[0]}
position=${myArray[1]}
while [ ${like:0:1}=="E" ]
file=$like."Rput"
echo "$file"
所以当我回显文件时,文件名是## file.output,这是一个我根本不想要的文件。从某种意义上说,我希望它完全跳过它。
有人能告诉我发生了什么事吗?
谢谢!
答案 0 :(得分:0)
如果用while
语句替换if-then
,则有效:
while IFS=$'\t' read -r -a myArray
do
like=${myArray[0]}
position=${myArray[1]}
if [ "${like:0:1}" == "E" ]
then
file=$like."Rput"
echo "$file"
fi
done
另请注意,空格很重要。以下测试like
与E
平等的第一个字符:
[ "${like:0:1}" == "E" ]
但是,以下是不相关的事情:
[ "${like:0:1}"=="E" ]
由于此处的等号不以空格分隔,因此"${like:0:1}"=="E"
仅被解释为单个字符串。如果字符串为非空,则单个字符串的测试返回true,如果字符串为空则返回false。由于${like:0:1}"=="E"
始终为非空,因此始终返回true。