Bash &引用;导出:`=';:“不是有效的标识符”;导出变量时
我试图读取一个文件,每行将第二个参数转换成一个变量,并将第一个参数存储在该变量中 我有以下代码:Bash &引用;导出:`=';:“不是有效的标识符”;导出变量时,bash,variables,Bash,Variables,我试图读取一个文件,每行将第二个参数转换成一个变量,并将第一个参数存储在该变量中 我有以下代码: while read i do V1=$(echo $i |awk '{print $2}') V2=$(echo $i |awk '{print $1}') export $V1=$V2 done < test echo $a echo $b echo $c 当我读的时候 做 V1=$(echo$i|awk'{print$2}') V2=$(echo$
while read i
do
V1=$(echo $i |awk '{print $2}')
V2=$(echo $i |awk '{print $1}')
export $V1=$V2
done < test
echo $a
echo $b
echo $c
当我读的时候
做
V1=$(echo$i|awk'{print$2}')
V2=$(echo$i|awk'{print$1}')
导出$V1=$V2
完成<测试
回音$a
回音$b
回声$c
当它工作时,它给了我一个错误:“导出:`=':不是有效的标识符”
如果我从导出行中删除$,则代码不起作用(a、b、c没有值) 我怎样才能使它工作,没有错误?(稍后我确实需要a、b、c变量及其值)
以下是文件内容:
10A
20b
60 c赋值后能否分别回显V1和V2,并检查其中是否保存了空格字符 “导出:`=':不是有效的标识符”
通常在shell试图将其解释为导出三个名称的请求时出现:10、=和a.=不是有效的变量名,因此命令失败。您不需要所有
awk
内容read
可以为您进行拆分,例如,read-r v k时;导出“$k=$v”;完成
至于错误:可能是文件包含空行吗?使用bash-x
(或在顶部附近添加set-x
)运行脚本以查看发生了什么。(OT:我可以推荐吗?它将向您显示代码中的一些潜在问题。)谢谢@Biffen,显然,在最后一行之后有一个空行。或者当$V1
和$V2
为空时,命令被展开为export=
显然输入文件中有问题。在最后一行之后有一行空行。当我澄清错误消失时。