這可能是一個微不足道的問題,但在shell腳本中使用內置變量的正確方法是什麼?例如,如果我想編寫一個腳本來打開在$ EDITOR中指定的默認文本編輯器。剛使用在bash腳本中導出內建變量
export EDITOR
不會幫助。我發現,定義EDITOR變量有助於解決這個問題:
#!/bin/bash
export EDITOR=vim
$EDITOR
以上的工作,但有沒有給變量出口而不定義它的方法嗎?提前致謝。
這可能是一個微不足道的問題,但在shell腳本中使用內置變量的正確方法是什麼?例如,如果我想編寫一個腳本來打開在$ EDITOR中指定的默認文本編輯器。剛使用在bash腳本中導出內建變量
export EDITOR
不會幫助。我發現,定義EDITOR變量有助於解決這個問題:
#!/bin/bash
export EDITOR=vim
$EDITOR
以上的工作,但有沒有給變量出口而不定義它的方法嗎?提前致謝。
EDITOR
不是「內建」變量,您可以隨時將其導出(即將其設置爲環境變量)。這裏沒什麼神奇的。儘管bash在某些情況下解釋了這個變量,但是當他們想要啓動一個編輯器時,應用程序訪問這個變量是很常見的,所以在實際中,EDITOR
通常是導出的。例如,我有我的.zshrc和的.bashrc行
export EDITOR=nano
你的問題:您可以導出varible與空 falue,這樣
export EDITOR=
但我不」看看你會從中獲得什麼。
如果你只是想確保,你的shell腳本和所有後代進程有編輯器進行設置,常見的成語是
: ${EDITOR:=vim}
export EDITOR
如果你的腳本的用戶沒有定義這個變量,它被設置在這裏 - 你只需要兩行,因爲bash語法不允許將它合併爲一個。
你可以用'export EDITOR = $ {EDITOR:-vim '',但這可以說並不比簡單使用兩條線更好。 – chepner
我喜歡你的建議。從維護的角度來看,IMO稍好一些。 – user1934428
那會完成什麼?不,你不能輸出不存在的東西。你爲什麼要從一個只運行你剛定義的東西的腳本中導出一些東西?你似乎對「export」的功能感到困惑。也許你應該更新你的問題來解釋你爲什麼這麼問。 – tripleee
也許這可以幫到您?一種常見的情況是,如果定義了它,你想運行'EDITOR',否則就回退到'nano'。一個緊湊而又慣用的方法就是'$ {EDITOR-nano}' – tripleee
在http://unix.stackexchange.com/上提問 – ceving