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

问题描述 投票:0回答:2

我正在编写一个.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
bash glob windows-subsystem-for-linux
2个回答
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 ...

0
投票

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

#!/bin/bash

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

© www.soinside.com 2019 - 2024. All rights reserved.