如何将sbcl作为单个参数传递给字符串

Sim*_*Sim 2 bash sbcl common-lisp

我想使用bashcript将sbcl作为单个参数传递给sbcl,但是sbcl将字符串拆分为列表.

bashscript

#!/bin/bash

    sbcl --noinform --eval "(progn (FORMAT t \"~{~a~%~}\" sb-ext:*posix-argv*)(eval (read-from-string (second sb-ext:*posix-argv*))))" $1
Run Code Online (Sandbox Code Playgroud)

执行:

>sh bashsrcipt.bs "\"(FORMAT t \"YEAH\")\""
sbcl
"(FORMAT
t
"YEAH")"

debugger invoked on a END-OF-FILE in thread
#<THREAD "initial thread" RUNNING {1002999833}>:
  end of file on #<SB-IMPL::STRING-INPUT-STREAM {100443F523}>
Run Code Online (Sandbox Code Playgroud)

但结果应该是

>sh bashcript.bs "\"(FORMAT t \"YEAH~%\"\")"
sbcl
"(FORMAT t \"YEAH\")"
YEAH
Run Code Online (Sandbox Code Playgroud)

手册中没有提到这样的行为.

che*_*ner 8

$1我想你需要在脚本中引用:

sbcl --noinform --eval "..." "$1"
Run Code Online (Sandbox Code Playgroud)

(--eval为了清楚而省略的论据)