使用sameline export命令运行bourne shell脚本

时间:2013-12-16 17:06:20

标签: bash shell

我有一个类似

的shell脚本
#!/bin/sh

. ./.profile
echo "sample"

和.profile文件有

export variable = xyz

当我运行脚本时出现错误

  

variable = xyz不是标识符

我知道这是因为.profile中的同一行导出。

有没有办法让它运行?我不应该将sh更改为bash或ksh并且不能更改.profile文件,因为它有许多具有相同行导出的行。

2 个答案:

答案 0 :(得分:5)

在shell脚本中,spaces are not allowed in variable assignment

你应该简单地使用:

export variable=xyz

答案 1 :(得分:2)

如果你有一个真正的Bourne shell,那么你必须将它分成两个操作:

variable=xyz
export variable

然而,这些天的shell数量接近极少 - 但直到最近(至少在过去的五年内),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
$

然后您会收到您声明的消息,但我必须在导出的'值周围添加引号。