Linux Shell:目录中的/和//有区别吗?

Linux Shell:目录中的/和//有区别吗?,linux,shell,Linux,Shell,我正在用Shell制作这个小程序: #*************************************************************** # Function. # NAME: chk_df # Synopsis: # Check if a local directory (dirName) exist and has a file (fileName). # # # The return codes are the following: # 99 : dirNa

我正在用Shell制作这个小程序:

#***************************************************************
# Function.
# NAME: chk_df
# Synopsis:
# Check if a local directory (dirName) exist and has a file (fileName).
# 
# 
# The return codes are the following:
# 99 : dirName does not exists
#  0 : dirName exists and has fileName
#  1 : dirName exists and has not fileName
#
# Parameters:
# In values: dirName <string> fileName <string>
# Out values: returnCode <int>
# 
# How to use:
# chk_df dirName fileName
#***************************************************************
chk_df(){
   # Check the number of arguments that could be passed.
   # In this case, two, dirName, fileNAme.
   if [[ ${#@} != 2 ]]; then
       echo "Error ...Use [Function]: chk_df <dirName> <fileName>"
       echo "Ex: chk_df /foo lola.txt"
       exit
   fi   

   DIR=$1
   FILE=$2      

   [[ ! -d $DIR ]] && return 99
   [[ -d $DIR && ! -e $DIR/$FILE ]] && return 1
   [[ -d $DIR && -e $DIR/$FILE ]] && return 0

}
在这两种情况下,代码似乎都有效为什么?我读到反斜杠就像一个空格。那么,我能把n反斜杠放在没有未知问题的地方吗

我可以就这样离开吗?否则会带来问题的?有区别吗?你认为这是正确的吗


额外问题:为什么我不能用负数返回?这是:返回-1

没有区别


//=/

没有区别


//=/

原则上,您可以使用任意数量的
/
分隔符(直到您开始点击
路径\u MAX
或其他硬限制):

您将遇到的一个问题是,如果您想测试两个路径是否相同[*],因为/usr/bin/less和/usr/bin//less是相同的路径,但是不同的字符串。在比较之前规范化路径可能很有用


[*]忽略不同路径可以引用同一对象的事实。

原则上,您可以根据需要使用尽可能多的
/
分隔符(直到您开始点击
PATH\u MAX
或其他硬限制):

您将遇到的一个问题是,如果您想测试两个路径是否相同[*],因为/usr/bin/less和/usr/bin//less是相同的路径,但是不同的字符串。在比较之前规范化路径可能很有用


[*]忽略不同路径可以引用同一对象的事实。

/
/
或任何连续斜杠字符串根据POSIX标准具有相同的含义,但它们在路径开头可能具有不同的含义除外(因此
/foo
/foo
可能表示不同的对象)。Linux不使用此异常,因此任何数量的连续斜杠始终与单个
/
的意思相同


(例外情况是为了满足使用前导
/
表示网络路径的其他类Unix系统的需要。)
/
/
或任何连续斜杠字符串根据POSIX标准具有相同的含义,但它们在路径开头可能具有不同的含义(因此
/foo
/foo
可能表示不同的对象).Linux不使用此异常,因此任何数量的连续斜杠始终表示与单个
/
相同的内容


(例外情况是为了满足使用前导
/
表示网络路径的其他类Unix系统的需要。)

unix.stackexchange.com
中分别发布额外的问题谢谢,我在维基上读到了答案:
unix退出状态限制为0-255,即无符号8位整数的范围。
。只询问是否有办法绕过此问题。我将在另一个问题中写入。在
u中分别发布额外的问题nix.stackexchange.com
谢谢,我在维基上读到了答案:
Unix退出状态限制为0-255,即无符号8位整数的范围
。只询问是否有方法绕过此问题。我将在另一个问题中写下它。谢谢。您是否建议我,在使用代码时,请确保我只放一个
/
to清理代码。这是:如果我有两个或两个以上连续的
/
,就用一个
/
?在你看来,这是必要的吗?@Kani:使用单斜杠稍微安全一些,因为你不太可能点击
路径MAX
。如果你输出路径供用户使用或当你将它们存储在某个地方时,这也会更好。这通常不是必要的,所以你自己决定。回答@PrinceJohnWesley:是的,或者,从这样开始。谢谢。你能建议我,对于代码,确保我只放一个
/
来清理代码。这是:如果我有两个或更多连续的
/
,用一个
//code>替换它吗?在你看来,我这有必要吗?@Kani:使用单斜杠稍微安全一些,因为你不太可能点击
PATH\u MAX
。如果你输出路径供用户使用或存储在某个地方,这也会更好。这通常不是真的必要,所以你自己决定。回答@PrinceJohnWesley:是的,或者,从这样开始。
I) If we do: chk_df /foo lola.txt
We get: /foo/lola.txt

II) If we do: chk_df /foo/ lola.txt
We get: /foo//lola.txt [Notice the //]
$ ls /usr/bin///////////////less
/usr/bin///////////////less