传递路径到Bash脚本,速记符号

时间:2018-04-25 22:51:39

标签: bash

我不确定是否已经提出或回答了这个问题。如果有,我道歉。我不太确定要查找什么,但是我正在编写一个bash脚本来从用户那里获取路径,我的脚本使用绝对路径和相对路径。但我想知道是否有办法将速记符号解释为这些路径。例如〜/ for home或。用于当前或../用于目录。我在解决这个问题时遇到了一些麻烦。这是我当前的bash脚本供参考。

#!/bin/bash

echo "What is the path you'd like me to search?"

read PASSED

while [ ! -d $PASSED ]; do
    echo "$PASSED is not a valid directory"
    echo "Please provide a valid Path"
    read PASSED
done

ls -l $PASSED | awk -v user=`whoami` '{ if($3 == user){print $0}}'

1 个答案:

答案 0 :(得分:1)

...不是快捷方式,它们是每个目录中存在的实际目录名称。你不需要做任何事情来支持这一点。

但是,

~是您可以模仿的bash语法。

在最简单的情况下,只需检查前导~并替换:

# Read some path
printf 'Enter a path: '
IFS='' read -r mypath

# If the path starts with ~, replace it with $HOME
[[ $mypath = '~'* ]] && mypath="$HOME${mypath#'~'}"

# Show what we got
echo "The path is $mypath, aka $(realpath "$mypath")"

请注意,这不支持其他各种~语法,例如~username~+