Bash 变量在引号内时发生变化

Bash 变量在引号内时发生变化

我试图获取与模式匹配的第一个文件并在语句中使用它。使用与中找到的相同的步骤如何从通配符扩展中获得第一个匹配项?我写了以下内容:

#!/bin/bash
files=("*.sql")
firstfile=${files[0]}
echo $firstfile
echo "The first file is $firstfile"

当我运行这个时,输出是:

sql文件.sql

第一个文件是 *.sql

为什么值会$firstfile根据上下文而变化?

答案1

最后一行打印 $firstfile 中的实际内容。

第一个 echo 通过文件系统扩展 $firstfile ,因为您没有使用双引号。

答案2

删除文件行中的引号,剩下:

#!/bin/bash
files=(*.sql)
firstfile=${files[0]}
echo $firstfile
echo "The first file is $firstfile"

相关内容