File 找不到Unix文件描述符
我在使用文件描述符时遇到一些问题。最终目标是能够使用flock for,因为我正在使用此脚本更新文件,它可以并行运行多次,并且我不希望发生任何冲突。从另一个脚本调用此脚本并传递变量 调用脚本:“call.sh” 替换脚本:“replacement.sh” 当我运行call.sh regular或in debug(ksh)时,我得到一个错误:File 找不到Unix文件描述符,file,shell,ksh,file-descriptor,File,Shell,Ksh,File Descriptor,我在使用文件描述符时遇到一些问题。最终目标是能够使用flock for,因为我正在使用此脚本更新文件,它可以并行运行多次,并且我不希望发生任何冲突。从另一个脚本调用此脚本并传递变量 调用脚本:“call.sh” 替换脚本:“replacement.sh” 当我运行call.sh regular或in debug(ksh)时,我得到一个错误: ./call.sh: /replacement.sh[34]: 300: not found 起初,我认为可能文件描述符也需要在第一个脚本中,因此我添加了
./call.sh: /replacement.sh[34]: 300: not found
起初,我认为可能文件描述符也需要在第一个脚本中,因此我添加了:
exec 300>>$file
调用call.sh,但返回如下错误:
./call.sh[28]: 300 : not found
如果有人能向我解释我错过了什么,那就太棒了
提前谢谢
文件=/myfile.doc
9
而不是300
#!/bin/ksh
file=./myfile.doc
exec 9>>$file
flock -x 9 9>&9
当我检查我的代码时,空格是一个拼写错误,正如你所更正的。我将fd更改为9并重新运行脚本,它按计划工作,但是在flock-x 9>&9之后出现了一个错误flock:9:错误的文件描述符我想提及,不确定这是否重要,但我的代码中的“exec 9>>”颜色变为全黄色。“9>&9”也是黄色的。它适用于我发布的内容。您使用哪个ksh版本?PD ksh v5.2.14 99/07/13.2这是您得到的唯一错误吗?如果您
exec8>“$file”;群集-x 8 9>&8
./call.sh[28]: 300 : not found
#!/bin/ksh
file=./myfile.doc
exec 9>>$file
flock -x 9 9>&9