2015-11-04 75 views
0
#!/bin/bash 
if [ -f "$1" ] #parameter is file name, if i exists... 
then 
    VARIABLE=`cat "$1"` #assign what's inside into VARIABLE 
fi 

我試過bash -x script_01.sh "file"和跟蹤工作:shell腳本(分配給變量)不工作

+ '[' -f file ']' 
++ cat file 
+ VARIABLE='Wednesday, November 4, 2015 04:45:47 PM CET' 

但問題是,當我回聲$變量,它是空的。你們有關於如何使其工作的任何提示?謝謝。

+0

它適用於我。我在腳本的末尾添加了'echo $ VARIABLE'並將其保存在script.sh中。如果我運行'bash script.sh script.sh',它會按照預期迴應腳本的內容。 – buff

+0

是的,當我在腳本的末尾添加回顯時,它會起作用。但在腳本之外它並不是。我想這是在運行的另一個過程中。 –

回答

2

VARIABLE是在運行腳本的過程中設置的,而不是調用腳本的過程。如果您想在當前環境中設置它,則需要改爲輸入文件。

. script_01.sh "file" 
+0

所以,如果我理解正確,有兩個bashes,bash1:我現在使用的和bash2:運行腳本的。所以VARIABLE將僅在bash2中設置爲「cat file」,而在bash1中它不會是任何東西? 我不明白第二條路。我沒有使用「文件」作爲參數,對不對? –

+0

正確;變量對它們運行的​​腳本/ shell是「本地」的。所以儘管在'script_01.sh'運行中'VARIABLE'被正確設置了,一旦腳本退出,它就會消失。 – chepner

+0

所以爲了從腳本中獲得它,我不得不添加「export VARIABLE」? –