使用文件描述符时遇到了一些麻烦。最终目标是能够使用flock因为我使用这个脚本来更新文件,它可以并行运行多次,我不希望任何冲突。该脚本从另一个脚本调用并传递变量
调用脚本:“call.sh”
#!/bin/ksh
scriptDir=/home/Scripts
###other stuff happens####
#Call to replacement script
. $scriptDir/replacement.sh var1 var2
替换脚本:“replacement.sh”
#!/bin/ksh
var1=$1
var2=$2
file=/myfile.doc
exec 300>>$file
flock -x 300
##Replacement logic###
当我运行call.sh regular或debug(ksh)时,我收到一个错误:
./call.sh: /replacement.sh[34]: 300: not found
起初我可能也需要文件描述符在第一个脚本中,所以我添加了:
exec 300>>$file
到call.sh,但是返回了如下错误:
./call.sh[28]: 300 : not found
如果有人能向我解释我错过了什么,那就太棒了!
提前致谢!
答案 0 :(得分:1)
=
file= /myfile.doc
后的空格无效
9
代替300
。总之:
#!/bin/ksh
file=./myfile.doc
exec 9>>$file
flock -x 9 9>&9