Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
File 找不到Unix文件描述符_File_Shell_Ksh_File Descriptor - Fatal编程技术网

File 找不到Unix文件描述符

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 起初,我认为可能文件描述符也需要在第一个脚本中,因此我添加了

我在使用文件描述符时遇到一些问题。最终目标是能够使用flock for,因为我正在使用此脚本更新文件,它可以并行运行多次,并且我不希望发生任何冲突。从另一个脚本调用此脚本并传递变量

调用脚本:“call.sh”

替换脚本:“replacement.sh”

当我运行call.sh regular或in debug(ksh)时,我得到一个错误:

./call.sh: /replacement.sh[34]: 300: not found
起初,我认为可能文件描述符也需要在第一个脚本中,因此我添加了:

exec 300>>$file 
调用call.sh,但返回如下错误:

./call.sh[28]: 300 : not found
如果有人能向我解释我错过了什么,那就太棒了

提前谢谢

  • 文件=/myfile.doc
  • ksh仅在字面上使用时支持单位数fds。使用
    9
    而不是
    300
  • ksh使非标准FD不可继承。具体地将其重定向到命令
  • 总共:

     #!/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