我殼牌使這個小程序: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
}
因爲我需要檢查文件是否在目錄中,我這樣做(可怕?)補丁$ DIR/$ FILE,但事情像這樣可能發生:
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 //]
在這兩種情況下代碼似乎工作。 爲什麼?我讀到反斜槓的行爲像空間。所以,我可以把n反斜槓沒有未知的問題?
我可以這樣嗎?否則會帶來問題?有區別嗎? UNIX以正確的方式假設它?
額外問題:爲什麼我不能用負數做回報?這是:return -1
後多餘的問題seperately在'unix.stackexchange.com' –
謝謝,我在一個wiki中讀到這個答案:'Unix退出狀態被限制在值0-255,無符號8位整數的範圍內。只詢問是否有辦法繞過這一點。我會寫在另一個問題。 – Kani
http://unix.stackexchange.com/questions/12283/unix-difference-between-path-starting-with-and/12291#12291 –