我有一个类似
的shell脚本#!/bin/sh
. ./.profile
echo "sample"
和.profile文件有
export variable = xyz
当我运行脚本时出现错误
variable = xyz不是标识符
我知道这是因为.profile
中的同一行导出。
有没有办法让它运行?我不应该将sh更改为bash或ksh并且不能更改.profile文件,因为它有许多具有相同行导出的行。
答案 0 :(得分:5)
答案 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
$
然后您会收到您声明的消息,但我必须在导出的'值周围添加引号。