Bash脚本将Windows路径转换为linux路径

use*_*193 5 linux windows bash sed path

我是shell脚本的新手,并尝试完成以下操作,将Windows路径转换为linux路径并导航到该位置:

输入:cdwin "J:\abc\def" 动作:cd /usr/abc/def/

所以,我正在改变以下内容:

"J:" -> "/usr"
Run Code Online (Sandbox Code Playgroud)

"\" -> "/"
Run Code Online (Sandbox Code Playgroud)

这是我的尝试,但它不起作用.如果我回应它,​​它只返回一个空白:

function cdwin(){
    line="/usrfem/Projects$1/" | sed 's/\\/\//g' | sed 's/J://'
    cd $line
}
Run Code Online (Sandbox Code Playgroud)

fed*_*qui 9

您需要捕获变量然后处理它.

例如,这将使它:

function cdwin(){
    echo "I receive the variable --> $1"
    line=$(sed -e 's#^J:##' -e 's#\\#/#g' <<< "$1")
    cd "$line"
}
Run Code Online (Sandbox Code Playgroud)

然后你打电话给它

cdwin "J:\abc\def"
Run Code Online (Sandbox Code Playgroud)

说明

命令

line=$(sed -e 's#^J:##' -e 's#\\#/#g' <<< "$1")
Run Code Online (Sandbox Code Playgroud)

相当于

line=$(echo $1 | sed -e 's#^J:##' -e 's#\\#/#g')
Run Code Online (Sandbox Code Playgroud)

并取代所有的\/,结果保存到变种line.请注意,它使用另一个分隔符,#以使其更具可读性.它也消除了领先J:.