Ubuntu 18.04下OpenFOAM 2.3.1安装及配置
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Ubuntu 18.04下OpenFOAM 2.3.1安装及配置相关的知识,希望对你有一定的参考价值。
参考技术A OpenFOAM 2.3.1是Ubuntu 14.04 下发布的,尝试N次在18.04下安装失败后,求助 Bruno 大神,随后Bruno在OpenFOAMwiki上放出了 how to install OpenFOAM in Ubuntu 18.04 ,完美安装。Source guide 的编译出现问题,OpenFOAM 2.3.1版本的Source Guide 在Ubuntu环境下用Doxygen编译后是没有Search bar、main page等工具栏的。这是由于18.04的Doxygen版本太高,而且因为flex的版本也过新,无法安装低版本的Doxygen,所以只能在Ubuntu14.04上编译好Source guide,然后把html文件夹复制过来...
Qtcreator是一个很棒的IDE,可以链接OF中的各种*.C、*.H文件,安装及配置wmake的方法在这里: HowTo Use OpenFOAM with QtCreator ,其中编译设置选择作者推荐的 3.2.1 Option 1: using foamExec
Tips No.1 因为OF文件后缀是大写的C&H,可能会出现在导入现有项目时无法识别OF文件,只需在Qt文件过滤器(show files matching)中增加OF文件后缀:*.C、*.H
Tips No.2 安装git和gitk即可在Tool -> git中进行commit、Diff等版本管理操作
OpenFoam Win 10,Ubuntu Bash 安装失败
【中文标题】OpenFoam Win 10,Ubuntu Bash 安装失败【英文标题】:OpenFoam Win 10, Ubuntu Bash installing fails 【发布时间】:2018-10-12 15:13:13 【问题描述】:我正在尝试在 Win 10 上的 ubuntu bash 上安装 OpenFoam。我正在执行以下步骤: OpenFoam installation on win 10 Ubuntu bash
在这一步
源 $HOME/.bashrc
我收到以下错误:
-bash: eval: line 38: syntax error near unexpected token `('
-bash: eval: line 38: `PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/mnt/c/Program:Files:(x86)/Common:Files/Oracle/Java/javapath_target_275852031:/mnt/c/Windows/System32:/mnt/c/DAYSIM/lib:/mnt/c/DAYSIM/bin:/mnt/c/Windows:/mnt/c/Windows/System32/wbem:/mnt/c/Windows/System32/WindowsPowerShell/v1.0:/mnt/c/Windows/System32/OpenSSH:Files/Microsoft:SQL:Server/120/Tools/Binn:Files/Common:Files/Autodesk:Shared:/mnt/c/Radiance/bin:Server/130/Tools/Binn:Files/dotnet:Server/Client:SDK/ODBC/130/Tools/Binn:(x86)/Microsoft:Server/140/Tools/Binn:Server/140/DTS/Binn:Server/140/Tools/Binn/ManagementStudio:/mnt/c/Users/danie/AppData/Local/Programs/Python/Python36/Scripts:/mnt/c/Users/danie/AppData/Local/Programs/Python/Python36:/mnt/c/Users/danie/AppData/Local/Microsoft/WindowsApps:/mnt/c/Users/danie/AppData/Local/Programs/Microsoft:VS:Code/bin:/snap/bin'
-bash: eval: line 62: syntax error near unexpected token `('
-bash: eval: line 62: `PATH=/opt/OpenFOAM/ThirdParty-v1806/platforms/linux64Gcc63/openmpi-1.10.4/bin:/opt/OpenFOAM/ThirdParty-v1806/platforms/linux64/gcc-6.3.0/bin:/home/daniel/OpenFOAM/daniel-v1806/platforms/linux64Gcc63DPInt32Opt/bin:/opt/OpenFOAM/site/v1806/platforms/linux64Gcc63DPInt32Opt/bin:/opt/OpenFOAM/OpenFOAM-v1806/platforms/linux64Gcc63DPInt32Opt/bin:/opt/OpenFOAM/OpenFOAM-v1806/bin:/opt/OpenFOAM/OpenFOAM-v1806/wmake:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/mnt/c/Program:Files:(x86)/Common:Files/Oracle/Java/javapath_target_275852031:/mnt/c/Windows/System32:/mnt/c/DAYSIM/lib:/mnt/c/DAYSIM/bin:/mnt/c/Windows:/mnt/c/Windows/System32/wbem:/mnt/c/Windows/System32/WindowsPowerShell/v1.0:/mnt/c/Windows/System32/OpenSSH:Files/Microsoft:SQL:Server/120/Tools/Binn:Files/Common:Files/Autodesk:Shared:/mnt/c/Radiance/bin:Server/130/Tools/Binn:Files/dotnet:Server/Client:SDK/ODBC/130/Tools/Binn:(x86)/Microsoft:Server/140/Tools/Binn:Server/140/DTS/Binn:Server/140/Tools/Binn/ManagementStudio:/mnt/c/Users/danie/AppData/Local/Programs/Python/Python36/Scripts:/mnt/c/Users/danie/AppData/Local/Programs/Python/Python36:/mnt/c/Users/danie/AppData/Local/Microsoft/WindowsApps:/mnt/c/Users/danie/AppData/Local/Programs/Microsoft:VS:Code/bin:/snap/bin:'
-bash: eval: line 38: syntax error near unexpected token `('
-bash: eval: line 38: `PATH=/opt/OpenFOAM/ThirdParty-v1806/platforms/linux64Gcc63/gperftools-2.5/bin:/opt/OpenFOAM/ThirdParty-v1806/platforms/linux64Gcc63/openmpi-1.10.4/bin:/opt/OpenFOAM/ThirdParty-v1806/platforms/linux64/gcc-6.3.0/bin:/home/daniel/OpenFOAM/daniel-v1806/platforms/linux64Gcc63DPInt32Opt/bin:/opt/OpenFOAM/site/v1806/platforms/linux64Gcc63DPInt32Opt/bin:/opt/OpenFOAM/OpenFOAM-v1806/platforms/linux64Gcc63DPInt32Opt/bin:/opt/OpenFOAM/OpenFOAM-v1806/bin:/opt/OpenFOAM/OpenFOAM-v1806/wmake:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/mnt/c/Program:Files:(x86)/Common:Files/Oracle/Java/javapath_target_275852031:/mnt/c/Windows/System32:/mnt/c/DAYSIM/lib:/mnt/c/DAYSIM/bin:/mnt/c/Windows:/mnt/c/Windows/System32/wbem:/mnt/c/Windows/System32/WindowsPowerShell/v1.0:/mnt/c/Windows/System32/OpenSSH:Files/Microsoft:SQL:Server/120/Tools/Binn:Files/Common:Files/Autodesk:Shared:/mnt/c/Radiance/bin:Server/130/Tools/Binn:Files/dotnet:Server/Client:SDK/ODBC/130/Tools/Binn:(x86)/Microsoft:Server/140/Tools/Binn:Server/140/DTS/Binn:Server/140/Tools/Binn/ManagementStudio:/mnt/c/Users/danie/AppData/Local/Programs/Python/Python36/Scripts:/mnt/c/Users/danie/AppData/Local/Programs/Python/Python36:/mnt/c/Users/danie/AppData/Local/Microsoft/WindowsApps:/mnt/c/Users/danie/AppData/Local/Programs/Microsoft:VS:Code/bin:/snap/bin'
我不明白这里发生了什么。任何帮助将不胜感激。
OpenFoam bashrc 代码如下:
#----------------------------------*-sh-*--------------------------------------
# ========= |
# \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
# \\ / O peration |
# \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation
# \\/ M anipulation | Copyright (C) 2016-2018 OpenCFD Ltd.
#------------------------------------------------------------------------------
# License
# This file is part of OpenFOAM, licensed under GNU General Public License
# <http://www.gnu.org/licenses/>.
#
# File
# etc/bashrc
#
# Description
# The OpenFOAM environment for POSIX shell (eg, bash,dash,zsh,...).
# Source manually or from the ~/.bashrc or ~/.profile files.
#
# Many settings can be overridden using a <prefs.sh> file:
#
# - Base values (eg, from system admin):
# - $WM_PROJECT_DIR/etc/prefs.sh
#
# - User or group values (first file found):
# - ~/.OpenFOAM/$WM_PROJECT_VERSION/prefs.sh
# - ~/.OpenFOAM/prefs.sh
# - $WM_PROJECT_SITE/site/$WM_PROJECT_VERSION/prefs.sh
# - $WM_PROJECT_SITE/site/prefs.sh
#
# Note: Changes made to this bashrc file may be lost with the next upgrade.
#------------------------------------------------------------------------------
export WM_PROJECT=OpenFOAM
export WM_PROJECT_VERSION=v1806
# [FOAM_INST_DIR] - parent directory containing the OpenFOAM installation.
# \- When this file is located as $WM_PROJECT_DIR/etc/bashrc, the next lines
# should work when sourced by BASH or ZSH shells. If this however fails,
# set one of the fallback values to an appropriate path.
# --
rc="$BASH_SOURCE:-$ZSH_NAME:+$0"
[ -n "$rc" ] && FOAM_INST_DIR=$(\cd $(dirname $rc)/../.. && \pwd -L) || \
FOAM_INST_DIR=$HOME/$WM_PROJECT
# FOAM_INST_DIR=/opt/$WM_PROJECT
# FOAM_INST_DIR=/usr/local/$WM_PROJECT
#
# END OF (NORMAL) USER EDITABLE PART
################################################################################
: # Extra safety - if the user commented out all fallback values
unset rc
# Configuration environment variables.
# Should override via <prefs.sh> file instead of editing this file.
# [WM_COMPILER_TYPE] - Compiler location:
# = system | ThirdParty
export WM_COMPILER_TYPE=ThirdParty
# [WM_COMPILER] - Compiler:
# = Gcc | Gcc4[8-9] | Gcc5[1-5] | Gcc6[1-4] | Gcc7[1-3] | Gcc8[1] | GccKNL |
# Clang | Clang3[7-9] | Clang[4-6]0 | Icc | IccKNL | Cray | Arm
export WM_COMPILER=Gcc63
# [WM_ARCH_OPTION] - Memory addressing:
# = 32 | 64
# * on a 64-bit OS this can be 32 or 64
# * on a 32-bit OS, it is always 32-bit and this option is ignored
export WM_ARCH_OPTION=64
# [WM_PRECISION_OPTION] - Floating-point precision:
# = DP | SP
export WM_PRECISION_OPTION=DP
# [WM_LABEL_SIZE] - Label size in bits:
# = 32 | 64
export WM_LABEL_SIZE=32
# [WM_COMPILE_OPTION] - Optimised, debug, profiling:
# = Opt | Debug | Prof
export WM_COMPILE_OPTION=Opt
# [WM_MPLIB] - MPI implementation:
# = SYSTEMOPENMPI | OPENMPI | SYSTEMMPI | MPI | MPICH | MPICH-GM |
# HPMPI | CRAY-MPICH | FJMPI | QSMPI | SGIMPI | INTELMPI | USERMPI
export WM_MPLIB=OPENMPI
#------------------------------------------------------------------------------
# (legacy / advanced)
#
# [FOAM_SIGFPE] - Trap floating-point exceptions.
# - overrides the 'trapFpe' controlDict entry
# = true | false
#export FOAM_SIGFPE=true
# [FOAM_SETNAN] - Initialize memory with NaN
# - overrides the 'setNaN' controlDict entry
# = true | false
#export FOAM_SETNAN=false
# [WM_OSTYPE] - Operating System Type:
# = POSIX
#export WM_OSTYPE=POSIX
################################################################################
# Old directories to be cleaned from PATH, LD_LIBRARY_PATH
foamOldDirs="$WM_PROJECT_DIR $WM_THIRD_PARTY_DIR \
$HOME/$WM_PROJECT/$USER $FOAM_USER_APPBIN $FOAM_USER_LIBBIN \
$WM_PROJECT_SITE $FOAM_SITE_APPBIN $FOAM_SITE_LIBBIN"
# Location of installation and third-party software
export WM_PROJECT_INST_DIR=$FOAM_INST_DIR
export WM_PROJECT_DIR=$WM_PROJECT_INST_DIR/$WM_PROJECT-$WM_PROJECT_VERSION
export WM_THIRD_PARTY_DIR=$WM_PROJECT_INST_DIR/ThirdParty-$WM_PROJECT_VERSION
# [WM_PROJECT_SITE] - Location of site-specific (group) files
# default (unset) implies WM_PROJECT_INST_DIR/site
if [ -d "$WM_PROJECT_SITE" ]
then
export WM_PROJECT_SITE
else
unset WM_PROJECT_SITE
fi
# [WM_PROJECT_USER_DIR] - Location of user files
export WM_PROJECT_USER_DIR=$HOME/$WM_PROJECT/$USER-$WM_PROJECT_VERSION
# Load shell functions
. $WM_PROJECT_DIR/etc/config.sh/functions
# Overrides via <prefs.sh>
_foamEtc -mode=o prefs.sh # 1) other (system) values
_foamEtc -mode=ug prefs.sh # 2) user or group values
# Evaluate command-line parameters and record settings for later.
# These can be used to set/unset values, specify additional files etc.
export FOAM_SETTINGS="$@"
_foamEval $@
# Clean standard environment variables (PATH, MANPATH, LD_LIBRARY_PATH)
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
export PATH MANPATH LD_LIBRARY_PATH
_foamClean PATH "$foamOldDirs"
_foamClean MANPATH "$foamOldDirs"
_foamClean LD_LIBRARY_PATH "$foamOldDirs"
# Setup for OpenFOAM compilation etc
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
_foamEtc -config settings
# Setup for third-party packages
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
_foamEtc -config mpi
_foamEtc -config paraview -- $@ # Pass through for evaluation
_foamEtc -config vtk
_foamEtc -config ensight
_foamEtc -config gperftools
## _foamEtc -config ADIOS
## _foamEtc -config ADIOS2
_foamEtc -config CGAL
_foamEtc -config scotch
_foamEtc -config FFTW
# Interactive shell
if /usr/bin/tty -s 2>/dev/null
then
_foamEtc -config aliases
[ "$BASH_VERSINFO:-0" -ge 4 ] && _foamEtc -config bash_completion
fi
# Clean environment paths again. Only remove duplicates
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
export PATH MANPATH LD_LIBRARY_PATH
_foamClean PATH
_foamClean MANPATH
_foamClean LD_LIBRARY_PATH
# Add trailing ':' for system manpages
if [ -n "$MANPATH" ]
then
MANPATH="$MANPATH:"
fi
if [ -n "$LD_PRELOAD" ]
then
export LD_PRELOAD
_foamClean LD_PRELOAD
fi
# Cleanup temporary information
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# Unload shell functions
. $WM_PROJECT_DIR/etc/config.sh/functions
# Variables (done as the last statement for a clean exit code)
unset FOAM_INST_DIR # Old variable name (OpenFOAM-v1606) - now unneeded
unset cleaned foamOldDirs
#------------------------------------------------------------------------------
【问题讨论】:
这真是糟糕的代码。 真的糟糕的代码。考虑通过shellcheck.net 运行它(连同它获取它的函数定义——没有它们你将无法获得完整的评估)并将输出作为错误提交给制作它的人。 ...作为一些具体的起点:formOldDirs
应该是一个数组,而不是字符串——这样就根本不需要符号字符(无论是空格还是其他)。大多数未引用的扩展都需要引用以确保所有可能内容的安全。 $@
需要为 "$@"
以避免传递内容。 BashFAQ #48(Eval 命令和安全问题)和BashFAQ #50(我正在尝试将命令放入变量中,但复杂情况总是失败!)是推荐阅读。
顺便说一句,如果您确实在上游提交了一个错误,如果它包含启用xtrace
的执行日志,这将对他们有所帮助,这样他们就可以看到事情是如何破裂的在实践中。为此:PS4=':$BASH_SOURCE##*/:$LINENO+' bash -x yourscript
,并捕获它在 stderr 上发出的内容。
交叉投递:askubuntu.com/questions/1083334/…
【参考方案1】:
答案是foamCleanPath 如何在PATH 上使用IFS 内部拆分(带有空格)。现在,这已在当前的开发分支中进行了更改,更改类似于上一个(已删除)答案。
https://develop.openfoam.com/Development/OpenFOAM-plus/commit/0a2768667f4aa0eb02e41ab2a2de72dbf00e4af6
此外,OpenFOAM 现在允许 cwd() 使用逻辑名称而不是物理名称,当案例目录包含空格时,这提供了一种解决问题的额外方法。
https://develop.openfoam.com/Development/OpenFOAM-plus/commit/b7054272989a0e5fddbaf6dfbdbfb726f7db8539
【讨论】:
【参考方案2】:bash
(或您的.bashrc
)无法处理包含未转义括号的$PATH
。默认情况下,Windows 在其路径中有C:\Program Files (x86)
,并且很可能在Linux 子系统下将其转换为/mnt/c/Program Files (x86)
。一些糟糕的处理会将其转换为(例如)/mnt/c/Program:Files:(x86)
,然后 bash
在括号中阻塞。
如果您显示.bashrc
的相关行,也许可以找到修复程序。以下很可能会起作用:
export PATH="$PATH":/some/new/path
而不是
export PATH=$PATH:/some/new/path
更新
由于您的 .bashrc
正在寻找另一个 bashrc
文件,因此问题出在另一个 bashrc
文件上。该文件无法处理空格。
另见
How to add Path with space in bash variable
https://unix.stackexchange.com/questions/26047/how-to-correctly-add-a-path-to-path
【讨论】:
感谢您的回复。实际上,我不知道到底发生了什么。步骤如下:echo "source /opt/OpenFOAM/OpenFOAM-v1806/etc/bashrc" >> ~/.bashrc
source $HOME/.bashrc
我会上传文件。
那么错误可能在/opt/OpenFOAM/OpenFOAM-v1806/etc/bashrc
中。当谈到$PATH
中的空格或一般文件名时,Unix 人一无所知。
嘿。使用eval
的人毫无头绪(其中肯定包括手头编写脚本的人)。从长远来看,这并不是所有的“UNIX 人”。 (对只提出不寻常的文件名的可靠性错误不屑一顾的人数是一个长期的烦恼,但作为一个 UNIX 人,我不愿意接受它们作为我自己的一员——称之为“不是真正的苏格兰人”) .
我刚刚将 bashrc 文件中的代码添加到问题中。
叹息。是的。需要有人教这些人如何使用数组。也就是说,修复一堆别人的代码不是我不付钱就要做的事情。 (如果 OpenFoam 项目的某个人出现并询问有关如何修复它的建议,我很乐意提供它,但这不是这里发生的事情)。【参考方案3】:
感谢@user10142377,问题解决了。 foamCleanPath 中的代码必须替换为以下代码:
#!/bin/sh
#------------------------------------------------------------------------------
# ========= |
# \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
# \\ / O peration |
# \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation
# \\/ M anipulation | Copyright (C) 2017-2018 OpenCFD Ltd.
#-------------------------------------------------------------------------------
# License
# This file is part of OpenFOAM, licensed under GNU General Public License
# <http://www.gnu.org/licenses/>.
#
# Script
# foamCleanPath
#
# Description
# Usage: foamCleanPath [OPTION] path [filter] .. [filter]
# foamCleanPath [OPTION] -env=name [filter] .. [filter]
#
# Prints its argument (which should be a ':' separated path)
# without the following:
# - duplicate elements
# - elements matching the specified filter(s)
# - inaccessible directories (with the -strip option)
#
# Note
# - false matches possible when the filter contains '.' (sed regex) etc.
# - a single composite filter can be passed in. This composite filter
# is assumed to be delimited by whitespace, colons or semi-colons.
#
# Examples for cleaning the path:
#
# - Using explicit arguments
# cleaned=$(foamCleanPath "$PATH" dir1:dir2) && PATH=$cleaned
#
# - Variable to clean passed as an option
# cleaned=$(foamCleanPath -env=PATH dir1:dir2) && PATH=$cleaned
#
# - Using shell evaluation for the output
# eval $(foamCleanPath -sh=PATH $PATH" dir1:dir2)
# eval "$(foamCleanPath -sh=PATH -env=PATH dir1:dir2)"
# eval "$(foamCleanPath -sh-env=PATH dir1:dir2)"
#
# - Similarly for c-shell
# eval `foamCleanPath -csh-env=PATH dir1:dir2`
#
#------------------------------------------------------------------------------
usage()
cat <<USAGE 1>&2
Usage: foamCleanPath [OPTION] path [filter] .. [filter]
foamCleanPath [OPTION] -env=name [filter] .. [filter]
options:
-csh=NAME Produce 'setenv NAME ...' output for csh eval
-sh=NAME Produce 'NAME=...' output for sh eval
-csh-env=NAME As per -csh, with -env for initial content
-sh-env=NAME As per -sh, with -env for initial content
-env=NAME Evaluate NAME to obtain initial content
-debug Print debug information to stderr
-strip Remove inaccessible directories
-verbose Report some progress (input, output, ...)
-help Print the usage
Prints its argument (which should be a ':' separated list) cleansed from
* duplicate elements
* elements whose start matches one of the filters
* inaccessible directories (the -strip option)
Exit status
0 on success
1 general error
2 initial value of 'path' is empty
USAGE
exit 1
# Report error and exit
die()
exec 1>&2
echo
echo "Error encountered:"
while [ "$#" -ge 1 ]; do echo " $1"; shift; done
echo
echo "See 'foamCleanPath -help' for usage"
echo
exit 1
#-------------------------------------------------------------------------------
# Input and outputs
unset dirList shellOutput
# Parse options
unset optDebug optEnvName optStrip optVerbose
while [ "$#" -gt 0 ]
do
case "$1" in
-h | -help*)
usage
;;
-csh=* | -sh=* | -csh-env=* | -sh-env=*)
name="$1#*="
[ -n "$name" ] || die "Option '$1' missing an ENVNAME"
# Output prefix
case "$1" in
-csh*)
shellOutput="setenv $name " # eg, "setenv PATH xyz"
;;
*)
shellOutput="$name=" # eg, "PATH=xyz"
;;
esac
# For (-csh-env | -sh-env) also use name for input evaluation
case "$1" in
*-env=*)
optEnvName="$name"
;;
esac
;;
-env=*)
name="$1#*="
[ -n "$name" ] || die "Option '$1' missing an ENVNAME"
optEnvName="$name"
;;
-debug)
optDebug=true
;;
-strip)
optStrip=true
;;
-verbose)
optVerbose=true
;;
*)
break
;;
esac
shift
done
# Basic checks
if [ -n "$optEnvName" ]
then
eval "dirList=\$$optEnvName"
elif [ "$#" -ge 1 ]
then
dirList="$1"
shift
else
die "Requires at least one argument, or use the -env option"
fi
[ -n "$dirList" ] || exit 2 # Quick exit on empty 'dirList'
#-------------------------------------------------------------------------------
# Debugging (optional)
if [ -n "$optDebug" ]
then
printDebug() while [ "$#" -ge 1 ]; do echo "$1" 1>&2; shift; done;
else
printDebug() true; # No-op
fi
# Optional test for directory existence
if [ -n "$optStrip" ]
then
isDir() test -d "$1"; # Check for directory existence
else
isDir() test -n "$1"; # Only check for non-zero string
fi
# The "filter ... filterN" may have been passed as a single parameter
# or may contain ':' separators.
# Currently (OCT-2018) also accept split on whitespace too.
oldIFS="$IFS" # Preserve initial IFS
IFS=':; ' # Split on colon, semicolon, whitespace
set -- $*
if [ -n "$optVerbose" ]
then
echo "clean: $dirList" 1>&2
echo "with: $@" 1>&2
fi
printDebug "input>$dirList<"
# Apply filters via sed. Path and filter cannot contain '?'.
for filter
do
if [ -n "$filter" ]
then
printDebug "remove>$filter<"
dirList=$(echo "$dirList:" | sed -e "s?$filter[^:]*:??g")
fi
done
printDebug "intermediate>$dirList<"
IFS=':' # Split on colon. No split on whitespace.
set -- $dirList
# Rebuild the list
unset dirList
for dir
do
printDebug "check>$dir< in $dirList"
if isDir "$dir"
then
# Detect duplicates (ie, dir already in the list)
duplicate=$(echo ":$dirList:" | sed -ne '\?:'"$dir"':?p')
if [ -n "$duplicate" ]
then
printDebug "duplicate>$dir<"
else
dirList="$dirList$dirList:+:$dir"
fi
fi
done
IFS="$oldIFS" # Restore initial IFS
printDebug "output>$dirList<"
if [ -n "$optVerbose" ]
then
echo "output: \"$dirList\"" 1>&2
fi
echo "$shellOutput\"$dirList\""
#------------------------------------------------------------------------------
该文件可以在 OpenFoam 应用程序的 bin 文件夹中找到。 This link 在 OpenFoam 的 gitlab 中进行原始讨论。
【讨论】:
以上是关于Ubuntu 18.04下OpenFOAM 2.3.1安装及配置的主要内容,如果未能解决你的问题,请参考以下文章
OpenFoam Win 10,Ubuntu Bash 安装失败