我有一個shell腳本類似運行Bourne shell腳本
#!/bin/sh
. ./.profile
echo "sample"
和.profile文件具有
export variable = xyz
當我運行該腳本,我得到一個錯誤說
variable = xyz不是標識符
我知道這是因爲.profile
中的同行輸出。
有沒有辦法讓它運行?我不應該將sh更改爲bash或ksh,並且不能更改.profile文件,因爲它包含多行同行導出。
我有一個shell腳本類似運行Bourne shell腳本
#!/bin/sh
. ./.profile
echo "sample"
和.profile文件具有
export variable = xyz
當我運行該腳本,我得到一個錯誤說
variable = xyz不是標識符
我知道這是因爲.profile
中的同行輸出。
有沒有辦法讓它運行?我不應該將sh更改爲bash或ksh,並且不能更改.profile文件,因爲它包含多行同行導出。
ok ... export variable = xyz ....但問題是我不應該改變sh到bash或ksh,並且不能改變.profile文件,因爲它有很多與同一行導出的行.....是一種不會出現錯誤的方法 – user3108179
如果你有一個真正的Bourne shell,那麼你必須把它分成兩個操作:
variable=xyz
export variable
然而,這些炮彈的數量接近於到現在爲止這些日子一直很小 - 但直到最近(至少在最近五年內),Solaris上的/bin/sh
足夠像Bourne-shell一樣需要雙命令操作。
Korn shell,POSIX shells和Bash都支持單命令導出和分配操作。
顯示的行有問題 - 分配操作符周圍不能有空格。你們聲稱自己採寫:
export varibale = xyz
你應該寫:
export varibale=xyz
但是,該錯誤消息將沿着線:
-bash: export: `=': not a valid identifier
投訴應該是=
不是一個標識符,不是variable = xyz
不是一個有效的標識符。我有點懷疑你所引用的內容不是100%準確的。正如你所看到的,那是從bash
開始的,但我希望Bourne shell也是如此。如果你寫:
$ export 'variable = xyz'
-bash: export: `variable = xyz': not a valid identifier
$
然後你得到你要求的消息,但我不得不圍繞導出的'價值'添加引號。
samplefile:variable = xyz:不是標識符...這是我得到的確切錯誤 – user3108179
沒有空格,它強烈地表明你有一個_real_ Bourne shell,並且必須使用在我的答案的第一部分中描述的單獨的分配和導出符號。你在哪個平臺上運行? –
是否有一種方法可以避免將其寫入兩行不同的行...我正在unix平臺上工作 – user3108179
你的'export'是錯誤的,使用'export varibale =「xyz」'。 – fedorqui