【Shell函数】Windows-Linux路径转换

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了【Shell函数】Windows-Linux路径转换相关的知识,希望对你有一定的参考价值。

参考技术A

一个路径转换的函数:方便大家在aws 里面进行linux和windows 路径的转换;
(使用上一定注意加上引号 cdwin "Z:\\bgcrh\\build\\training_project_1\\practice_wh\\cp\\tools" )

https://www.coder.work/article/176623 转换函数
https://www.cnblogs.com/zyh9900010/p/11748179.html sed 基本用法: 包括# 用法;
https://blog.csdn.net/Jcggnice/article/details/108897392 sh脚本添加帮助文档;
https://www.cnblogs.com/struggle-1216/p/13174266.html 函数定义
字符串判断用[[ ]] || [[]] ; 数字判断使用(( ))
https://cloud.tencent.com/developer/article/1414363 零度断言
https://www.cnblogs.com/garyzhuang/p/10136852.html 脚本模板
https://www.tutorialspoint.com/how-to-output-colored-text-to-a-linux-terminal 颜色编码
echo -e "\\033[1;31mThis is bold red text\\033[0m\\n"
https://unix.stackexchange.com/questions/404586/how-to-save-a-function-in-bash-for-later-use 保存函数

step1: 上传到mobaxterm

step2: 加载到Linux环境里面

echo -e "\\033[1;31mThis is bold red text\\033[0m\\n $path"

欢迎大家评论交流😊~

[转]如何取得当前正在执行的shell脚本的绝对路径?

来源:http://sexywp.com/bash-how-to-get-the-basepath-of-current-running-script.htm

 

如题,一般我们写Shell脚本的时候,都倾向使用绝对路径,这样无论脚本在什么目录执行,都应该起到相同的效果,但是有些时候,我们设计一个软件包中的工具脚本,可能使用相对路径更加灵活一点,因为你不知道用户会在哪个目录执行你的程序,就有了本文的题目。

当然,更简单的办法,是给一个配置文件,要使用,必须先配置,告知脚本自己所在的根目录。

此外还有一种方法:

#!/bin/bash
path=$(cd `dirname $0`; pwd)
echo $path

 

常见的一种误区,是使用pwd命令,该命令的作用是“print name of current/working directory”,这才是此命令的真实含义,当前的工作目录,这里没有任何意思说明,这个目录就是脚本存放的目录。所以,这是不对的。

另一个误人子弟的答案,是$0,这个也是不对的,这个$0是Bash环境下的特殊变量,其真实含义是:

Expands to the name of the shell or shell script. This is set at shell initialization. If  is invoked with a file of commands, $0 is set to the name of that file. If  is started with the -c option, then $0 is set to the first argument after the string to be executed, if one is present. Otherwise, it is set to the file name used to invoke , as given by argument zero.

 

这个$0有可能是好几种值,跟调用的方式有关系:

  1. 使用一个文件调用bash,那$0的值,是那个文件的名字(没说是绝对路径噢)
  2. 使用-c选项启动bash的话,真正执行的命令会从一个字符串中读取,字符串后面如果还有别的参数的话,使用从$0开始的特殊变量引用(跟路径无关了)
  3. 除此以外,$0会被设置成调用bash的那个文件的名字(没说是绝对路径)

 

很靠近了,但是还是不对,最后,我们说一下上面的脚本是什么意思,从里往外看:

  • dirname $0,取得当前执行的脚本文件的父目录
  • cd dirname $0,进入这个目录(切换当前工作目录)
  • pwd,显示当前工作目录(cd执行后的)

由此,我们获得了当前正在执行的脚本的存放路径。

 

以上是关于【Shell函数】Windows-Linux路径转换的主要内容,如果未能解决你的问题,请参考以下文章

mount windows-linux文件共享

Shell脚本怎样转相对路径为绝对路径

[转]如何取得当前正在执行的shell脚本的绝对路径?

(转)Shell基础语法

转:linux下shell显示-bash-4.1#不显示路径解决方法

(转)Shell常用的特殊位置参数变量说明