.sh 文件返回文件路径而不是文件名

.sh file returned file path instead of file name

我正在编写一个.sh 文件来逐个打印文件名。我已经在 windows 10 中安装了 ubuntu 并使用 windows 命令提示符来执行以下代码。它返回 "E:/Official/Backups/GGG/*" 而不是里面的文件名。我还使用记事本 ++ 将 EOL 转换更改为 Unix(LF)。请帮忙

#!/bin/bash
folder="E:/Official/Backups/GGG"
for entry in "$folder"/*
do
echo "$entry"
done

运行 脚本输出:

$ bash test1.sh
E:/Official/Backups/GGG/*

回显 $-

的输出
himBHs

ls -ld E 的输出:/Official/Backups/GGG

ls: cannot access 'E:/Official/Backups/GGG': No such file or directory

GGG 文件夹不存在。请检查并更新有效文件夹,然后重试。

#!/bin/bash

文件夹="E:" 进入“$文件夹”/* 做 回声“$条目” 完成

我在 WSL 中的 bash 无法识别 windows 路径。如果我想访问 E:\Official\Backups\GGG 我将不得不使用 /mnt/e/Official/Backups/GGG.

我想,您的 WSL 也是如此 bash。因此 "path" E:/Official/Backups/GGG 只是一个不存在的目录,您观察到的行为是可以预料的。使用 bash 的默认设置,如果目录不存在或为空,则 * 将作为文字保留在那里。示例:

$ echo /dir/that/doesnt/exist/*
/dir/that/doesnt/exist/*
$ echo /dir/that/exists/but/is/empty/*
/dir/that/exists/but/is/empty/*
$ echo /dir/*
/dir/file1 /dir/file2 /dir/file3 ...