2016-02-02 32 views
0

這可能是一個微不足道的問題,但在shell腳本中使用內置變量的正確方法是什麼?例如,如果我想編寫一個腳本來打開在$ EDITOR中指定的默認文本編輯器。剛使用在bash腳本中導出內建變量

export EDITOR 

不會幫助。我發現,定義EDITOR變量有助於解決這個問題:

#!/bin/bash  
export EDITOR=vim 
$EDITOR 

以上的工作,但有沒有給變量出口而不定義它的方法嗎?提前致謝。

+0

那會完成什麼?不,你不能輸出不存在的東西。你爲什麼要從一個只運行你剛定義的東西的腳本中導出一些東西?你似乎對「export」的功能感到困惑。也許你應該更新你的問題來解釋你爲什麼這麼問。 – tripleee

+0

也許這可以幫到您?一種常見的情況是,如果定義了它,你想運行'EDITOR',否則就回退到'nano'。一個緊湊而又慣用的方法就是'$ {EDITOR-nano}' – tripleee

+0

在http://unix.stackexchange.com/上提問 – ceving

回答

1

EDITOR不是「內建」變量,您可以隨時將其導出(即將其設置爲環境變量)。這裏沒什麼神奇的。儘管bash在某些情況下解釋了這個變量,但是當他們想要啓動一個編輯器時,應用程序訪問這個變量是很常見的,所以在實際中,EDITOR通常是導出的。例如,我有我的.zshrc和的.bashrc行

export EDITOR=nano 

你的問題:您可以導出varible與 falue,這樣

export EDITOR= 

但我不」看看你會從中獲得什麼。

如果你只是想確保,你的shell腳本和所有後代進程有編輯器進行設置,常見的成語是

: ${EDITOR:=vim} 
export EDITOR 

如果你的腳本的用戶沒有定義這個變量,它被設置在這裏 - 你只需要兩行,因爲bash語法不允許將它合併爲一個。

+0

你可以用'export EDITOR = $ {EDITOR:-vim '',但這可以說並不比簡單使用兩條線更好。 – chepner

+0

我喜歡你的建議。從維護的角度來看,IMO稍好一些。 – user1934428