String Bash脚本参数,需要或填写特定字符

String Bash脚本参数,需要或填写特定字符,string,bash,String,Bash,我正在编写一个bash脚本,它将把一个.tgz文件输出到一个特定的目录,默认情况下为/tmp/ 我想提供一个选项来覆盖这个目录,我已经选择使用命令行中提供的参数来覆盖这个目录 while getopts d: option do case "${option}" in d) dir=${OPTARG};; esac done 如前所述,这是可行的,但我遇到了一个取决于用户输入的障碍 我的.tgz文件的名称也是一个变量,我的代码将这一切结合在一起

我正在编写一个bash脚本,它将把一个.tgz文件输出到一个特定的目录,默认情况下为/tmp/ 我想提供一个选项来覆盖这个目录,我已经选择使用命令行中提供的参数来覆盖这个目录

    while getopts d: option
    do
    case "${option}" in
    d) dir=${OPTARG};;
    esac
    done
如前所述,这是可行的,但我遇到了一个取决于用户输入的障碍 我的.tgz文件的名称也是一个变量,我的代码将这一切结合在一起

    output="$dir""$name"
我遇到的问题是,如果用户运行

    ./script -d /home/user
我的结果路径和文件名最终为

    /home/userfilename.tgz
我需要强制执行尾随/插入的要求,如果用户没有这样做。 当它工作时,如果我将输出变量更改为

    output="$dir"/"$name"
如果用户确实提供了一个尾随/I,那么我最终会得到这样的结果,并且我正在努力保持我的输出美观

    /home/user//filename.tgz
如果您有任何意见,我们将不胜感激。

请添加该行

output="${output//\/\///}"
加入
dir
name

它看起来很复杂,但是它用一个斜杠代替了两个斜杠


您可以在中找到更多信息。

如果您的文件名不是以多个斜杠开头,POSIX会将多个斜杠视为单个斜杠,因此在
$dir