做不到:FISH变量传递字符串命令行

文摘   科技   2024-08-31 10:49   内蒙古  

1. 引言

FISH变量能够传递参数变量,包括字符串和参数值,例如:
model title [title]block create brick [-size] [size]block zone property density [density] bulk [bulk] shear [shear]
突发奇想,想看看FISH变量能不能传递纯字符串命令,如下面这个样子:
local model_type = string.build("block zone cmodel assign %1", 'elastic')[model_type]
于是复习了所有的string函数,看FISH是否存在这样的功能。

2. string函数回顾

目前共有23个string函数,包括:

(1) string.build【FISH: 使用MAP数组实现loop foreachItasca软件(FLAC3D, 3DEC, PFC)推出Linux版本---一个更好的体验?

(2) string.compare

(3) string.csv.from

local mystrings = string.csv.from(::file.all(‘filename.txt’,‘text’))

(4) string.csv.to

(5) string.file.ext

(6) string.file.name

(7) string.file.path

(8) string.find【3DEC模型转换到FLAC3D模型替代界面元---FLAC3D单元节理模拟多个相交的节理

(9) string.find.regex

(10) string.join

(11) string.len

(12) string.lower

(13) string.match.regex

(14) string.replace

(15) string.replace.regex

(16) string.simplify

(17) string.split

(18) string.split.regex

(19) string.sub

(20) string.token

(21) string.token.type

(22) string.type

(23) string.upper

其中,最常用的函数是string.build和string.find。回顾结果发现没有FISH变量传递纯字符串命令的函数。

3. 结束语

采用string.build产生的变量model_type仍然是string类型,这可以使用string.type(model_type)来验证,返回值是"str",因此尽管model_type = block zone cmodel assign elastic,但变量类型仍然是string,无法转换为命令行,目前Itasca软件不支持将整个命令字符串作为输入动态执行,所以目前这是一个异想天开的做法,实现不了。Python有实现这种功能的函数,例如使用 eval(),希望将来FISH能够加入函数string.eval()。

计算岩土力学
2024年5月8日,《计算岩土力学》建立4周年啦!
 最新文章