2 回答

TA貢獻(xiàn)1963條經(jīng)驗(yàn) 獲得超6個(gè)贊
對(duì)bash編程不熟,說個(gè)無關(guān)的,我認(rèn)為更廣泛的原則是,對(duì)于shell有特殊含義的字符,在使用的時(shí)候還是應(yīng)該用引號(hào),這應(yīng)該是shell通用的原則。
mkdir 'lol omg'

TA貢獻(xiàn)1804條經(jīng)驗(yàn) 獲得超2個(gè)贊
shell有特殊含義的字符,在使用的時(shí)候還是應(yīng)該用引號(hào),這應(yīng)該是shell通用的原則
不過要補(bǔ)充幾點(diǎn):
對(duì)于你上面的創(chuàng)建并進(jìn)入一個(gè)目錄的腳本來說,mkdir $1并不能創(chuàng)建目錄second demo/,因?yàn)镾hell傳遞給腳本的$1是second demo,于是mkdir $1相當(dāng)于mkdir second demo,會(huì)創(chuàng)建兩個(gè)目錄。所以需要使用雙引號(hào),即:mkdir "$1".
用./newdir執(zhí)行腳本時(shí),Shell會(huì)fork一個(gè)子進(jìn)程并調(diào)用exec執(zhí)行這個(gè)腳本,因此cd ..命令改變的是子Shell的PWD,而不會(huì)影響到交互式Shell的pwd。
如果想在當(dāng)前shell進(jìn)程執(zhí)行腳本,可以使用.或者source命令。
腳本如下:
mkdir "$1" && cd "$1"
用source或者. 執(zhí)行結(jié)果:
$ pwd
/home/user/etc
$ source ./a.sh 'new dir'
$ pwd
/home/user/etc/new dir
- 2 回答
- 0 關(guān)注
- 185 瀏覽
添加回答
舉報(bào)