Regex 正则表达式bash中的葡萄酒目录
我正在编写一个小的shell脚本,在我的wine目录中启动一个程序。 我的挑战是我已经在多台机器上安装了它,有些机器有64台 有些是32位的,有些是英语的,有些是挪威本地人的 因此,Regex 正则表达式bash中的葡萄酒目录,regex,bash,wine,Regex,Bash,Wine,我正在编写一个小的shell脚本,在我的wine目录中启动一个程序。 我的挑战是我已经在多台机器上安装了它,有些机器有64台 有些是32位的,有些是英语的,有些是挪威本地人的 因此,$HOME/.wine/drive_c中的程序文件目录的名称可以更改 从程序文件,程序文件(x86),程序文件管理器等 到目前为止,我的bash行是: (cd $HOME/.wine/drive_c/[Pp]rogram*/... ; wine ...) 但是,[Pp]rogram*行不起作用,有人有好的建议吗?应
$HOME/.wine/drive_c
中的程序文件目录的名称可以更改
从程序文件
,程序文件(x86)
,程序文件管理器
等
到目前为止,我的bash
行是:
(cd $HOME/.wine/drive_c/[Pp]rogram*/... ; wine ...)
但是,
[Pp]rogram*
行不起作用,有人有好的建议吗?应该可以,但是由于您在64位安装上同时拥有程序文件和程序文件(x86)
,因此这将始终扩展到程序文件,这在您的情况下可能是错误的
我将使用以下方法动态确定正确的路径:
look_for='My Program/myprogram.exe'
for dir in "$HOME"/.wine/drive_c/[Pp]rogram*[Ff]*/; do
if [ -e "${dir}${look_for}" ]; then
cd "${dir}"
wine [...]
exit $?
fi
done
这将遍历所有可能的“程序文件”目录,并检查$look\u for
中指定的文件/目录是否存在于其下方。如果有,它会将$look_for
,cd
s的目录组件放入其中,然后从那里运行wine
。什么是“不起作用的”?发生了什么?请不要在标题中添加“[已解决]”以表示问题已解决。你可以通过接受一个答案来做到这一点(你已经这样做了)。@Dan SimonMyrland显然我在复制粘贴时犯了一个错误,因为我的解释没有反映代码片段。要将cd
放入目录部分,您可能需要执行cd“$(dirname“${dir}${look\u for}”)”
而不是$look\u for
也包含目录组件,但我想您自己已经解决了这个问题:-)