gpt4 book ai didi

Linux bash : destination directory given by user, 存储在一个变量中

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:27:37 25 4
gpt4 key购买 nike

我需要在 linux bash 中创建一个脚本,在某些时候用户可以在其中输入目录路径。为此,我应该使用 read -p 命令。然后我应该检查目录是否存在。在用户尝试输入 ~/path 之前,我的下面代码工作正常。该代码无法将符号 ~ 识别为主目录。有什么建议吗?

read -p "Please, enter the destination: "
if [ -d "$REPLY" ]; then
echo "Directory exists!"
fi

最佳答案

您必须自己将 ~ 替换为 "$HOME"。还有其他类型的 tilde 扩展,您通常不常使用,例如 ~user 来获取用户的 homedir 而不是您自己的 homedir。假设你只关心第一种情况,那么参数扩展就可以了

read -ep 'Please, enter the destination: ' dir
dir=${dir/#~/$HOME}
if [[ -d $dir ]]; then
printf 'Good job, the directory exists!\n'
fi

您可能会注意到我在读取命令中添加了 -e。这使得 read 使用 readline 库读取目录。这意味着用户可以使用制表符补全。

参见 BashFAQ 100有关 bash 中的字符串操作的更多信息。

关于Linux bash : destination directory given by user, 存储在一个变量中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34355975/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com