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

时间:2019-12-15 06:11:52

标签: bash glob windows-subsystem-for-linux

我正在编写一个.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

2 个答案:

答案 0 :(得分:0)

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

#!/bin/bash

folder =“ E:” 用于输入“ $ folder” / * 做 回声“ $ entry” 完成

答案 1 :(得分:0)

我在WSL中的bash无法识别Windows路径。如果要访问E:\Official\Backups\GGG,则必须使用/mnt/e/Official/Backups/GGG

我认为,您的WSL重击也是如此。因此,“路径” 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 ...
相关问题