簡體   English   中英

在Unix中“導出”時無法識別文件名中的空格

[英]White spaces in file names not being recognized when 'exported' in Unix

在MacOS中,我創建的目錄名稱帶有空格。 當使用bash / Unix命令進行如下所示的導航時,它可以正常工作。

cd /Users/jdoe/"Box Sync"/Professional/"Classes Taken"
pwd
/Users/jdoe/Box Sync/Professional/Classes Taken

cd "/Users/jdoe/Box Sync/Professional/Classes Taken"
pwd
/Users/jdoe/Box Sync/Professional/Classes Taken

當我定義如下所示的環境變量時,相同的路徑名不起作用。 誰能解釋為什么不是

export CLASSES_TAKEN='"/Users/jdoe/Box Sync/Professional/Classes Taken"'
echo $CLASSES_TAKEN
"/Users/jdoe/Box Sync/Professional/Classes Taken"
$ cd $CLASSES_TAKEN
-bash: cd: "/Users/jdoe/Box: No such file or directory

export CLASSES_TAKEN=/Users/jdoe/"Box Sync"/Professional/"Classes Taken"
echo $CLASSES_TAKEN
/Users/jdoe/"Box Sync"/Professional/"Classes Taken"
cd $CLASSES_TAKEN
-bash: cd: /Users/jdoe/"Box: No such file or directory

但是,當我這樣做時,它會起作用:

export CLASSES_TAKEN="/Users/jdoe/Box Sync/Professional/Classes Taken"
cd "$CLASSES_TAKEN"
pwd
/Users/jdoe/Box Sync/Professional/Classes Taken

我的問題是在使用環境變量時如何避免使用引號( "$CLASSES_TAKEN" )。 我想說cd $CLASSES_TAKEN

我檢查了很多帖子,但沒有找到解決我問題的答案。

我強烈不建議這樣做 ,但是您可以使cd表現得像echo ,並且只需將多個參數與空格連接即可:

cd() { builtin cd "$*"; }

export CLASSES_TAKEN='/Users/jdoe/Box Sync/Professional/Classes Taken'
echo $CLASSES_TAKEN
cd $CLASSES_TAKEN

正如您所描述的那樣工作,但是有一些陷阱。 正確的方法是引用變量。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM