如果 TCL 中不存在,则创建一个目录

mai*_*ash 6 directory expect tcl

我编写了登录远程机器并在那里运行一些脚本的期望脚本但我还需要验证以下内容

验证目录是否/var/cti/adm/APP存在。

如果adm目录下不存在APP ,则需要创建此目录并为该目录添加所有权,(作为chown系统)

请建议如何检查expect脚本中是否存在目录,如果不需要创建此目录

我的期望脚本的一部分示例

 #!/usr/bin/expect -f
 set multiPrompt {[#>$]}
 send "ssh  $LOGIN3@$IP\r"
 sleep 0.5
       expect  {
       word:  {send $PASS\r ; exp_continue } 
       expect -re $multiPrompt
       }
Run Code Online (Sandbox Code Playgroud)

例如我们如何用 bash 做到这一点

 [[ ! -d /.../..../... ]] && mkdir -p xxxxx
Run Code Online (Sandbox Code Playgroud)

nwk*_*nwk 9

您可以在纯 Tcl 中执行此操作,而无需exec

#!/usr/bin/env expect
set path dir1/dir2/dir3
file mkdir $path ;# [file mkdir] in Tcl is like mkdir -p
file attributes $path -owner system
Run Code Online (Sandbox Code Playgroud)


Gil*_*il' 0

您可以将命令作为子进程执行。mkdir

exec mkdir -p -- $directory
Run Code Online (Sandbox Code Playgroud)

如果您还需要设置所有权,但仅在创建目录时设置,请显式调用 shell。

exec sh -c "if ! [ -d \"\$1\" ]; then mkdir -- \"\$1\" && chown -- bob \"\$1\"; fi" _ $directory
Run Code Online (Sandbox Code Playgroud)