如果我硬编码csgo路径,我的代码可以工作,但是如果我使用搜索功能并使用sed替换我搜索的目录,则代码失败。
#Find directorties of CSGO instances to update
updatepaths=`find /home/tcagame/ -type f -name "update_csgo.txt"`
#Splits diretories on space to be read from the array
updates=($updatepaths)
#Path to CSGO instances to update
#csgo="/home/tcagame/user/33/csgo/steam.inf"
#Creating automated path
csgo= echo "${updates[0]}" | sed 's,update_csgo.txt,csgo/steam.inf,'
#Check for updates
python $updatecheck $csgo > ~/autoupdate/status/updatestatus.txt
当我echo "$csgo"
创建一个新行时,我认为这就是为什么它不起作用。
/home/tcagame/user/33/csgo/steam.inf
[New Line]
这是我试图以自动化方式实现的目标:
python srcupdatecheck /home/tcagame/iceman/206/csgo/steam.inf
答案 0 :(得分:1)
使用mapfile
将find
输出行读取到数组中比依赖单词拆分更安全:您遇到的唯一问题是文件名是否包含换行符。< / p>
mapfile -t updates < <(find /home/tcagame/ -type f -name "update_csgo.txt")
在这里,您只需要参数扩展,而不是sed:
csgo="${updates[0]%update_csgo.txt}csgo/steam.inf"
或者,让我们为您做更多的繁重工作:
mapfile -t update_dirs < <(
find /home/tcagame/ -type f -name "update_csgo.txt" -exec dirname '{}' \;
)
csgo="${update_dirs[0]}/csgo/steam.inf"