1

我正在编写一个提示用户输入文件路径的 shell 脚本:

read -e -p "Enter the path to the file: " FILEPATH

然后我使用这个文件路径来执行操作——即压缩一个文件夹。

(cd "$FILEPATH"; tar -cvz *) > /tmp/torrent.tar.gz;

在提示符下,如果我使用~别名(主目录),那么 shell 脚本似乎无法理解这一点,因为tar函数压缩了错误的路径。无论如何我可以允许这个别名吗?

此外,选项卡完成似乎在提示符下区分大小写。我想知道我怎样才能改变它?

4

2 回答 2

1

使用 eval 的示例:

read -e -p "Enter the path to the file: " FILEPATH
eval FILEPATH=$FILEPATH
cd $FILEPATH
echo $PWD

在你的情况下,它变成:

read -e -p "Enter the path to the file: " FILEPATH
eval FILEPATH=$FILEPATH
(cd "$FILEPATH"; tar -cvz *) > /tmp/torrent.tar.gz;

要处理空格,您可以使用 sed:

read -e -p "Enter the path to the file: " FILEPATH
FILEPATH=$(echo $FILEPATH | sed 's/ /\\ /')
eval FILEPATH=$FILEPATH
cd "$FILEPATH"
echo $PWD
于 2012-12-18T02:31:16.843 回答
0

您可以像这样自己应用替换:

filepath=${filepath/\~/$HOME}

我不知道是否有办法让 shell 为你做这件事。

这是您其他问题的答案:https ://superuser.com/questions/90196/case-insensitive-tab-completion-in-bash

于 2012-12-18T01:52:28.880 回答